Skip to content

[CIR][CIRGen][Builtin][X86] Lower compressstore x86 intrinsics #1783

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 2,645 commits into
base: main
Choose a base branch
from

Conversation

RiverDave
Copy link
Collaborator

No description provided.

Lancern and others added 30 commits April 9, 2025 15:23
This PR adds an insertion guard for the try body scope for try-catch.
Currently, the following code snippet fails during CodeGen:

```
void foo() {
  int r = 1;
  try {
    ++r;
    return;
  } catch (...) {
  }
}
```

The insertion point doesn't get reset properly and the cleanup is being
ran for a wrong/deleted block causing a segmentation fault. I also added
a test.
The comments suggested that we should use TableGen to generate the
recognizing functions. However, I think templates might be more suitable
for generating them -- and I can't find any existing TableGen backends
that let us generate arbitrary functions.

My choice of design is to offer a template to match standard library
functions:
```cpp
// matches std::find with 3 arguments, and raise it into StdFindOp
StdRecognizer<3, StdFindOp, StdFuncsID::Find>
```
I have to use a TableGen'd enum to map names to IDs, as we can't pass
string literals to template arguments easily in C++17.

This also constraints design of future `StdXXXOp`s: they must take
operands the same way of StdFindOp, where the first one is the original
function, and the rest are function arguments.

I'm not sure if this approach is the best way. Please tell me if you
have concerns or any alternative ways.
…was set explicitly (llvm#1482)

This is backported from a change made in
llvm/llvm-project#131181

---------

Co-authored-by: Morris Hafner <[email protected]>
…R attribute. (llvm#1467)

Started decorating CUDA shadow variables with the shadow_name CIR
attribute which will be used for registering the globals.
… target was set explicitly" (llvm#1509)

Reverts llvm#1482

@mmha this is crashing on macos on asserts build:
```
FAIL: Clang :: CIR/Tools/cir-translate/warn-default-triple.cir (472 of 552)
******************** TEST 'Clang :: CIR/Tools/cir-translate/warn-default-triple.cir' FAILED ********************
Exit Code: 134

Command Output (stdout):
--
Assertion failed: (!DataLayoutString.empty() && "Uninitialized DataLayout!"), function getDataLayoutString, file TargetInfo.h, line 1282.
```

Perhaps besides picking a default you maybe need to do some missing
datalayout init?
…lementwise_acos (llvm#1507)

Closes: llvm#1374

Replaces LLVMIntrinsicCallOp with ACosOp in __builtin_elementwise_acos.
Sub-issue of llvm#1192. Adds
CIR_ASinOp and support for __builtin_elementwise_asin.
This un-xfails the 6 files in llvm#1497 related to variadic calls.
Sub-issue of llvm#1192. Adds
CIR_ATanOp and support for __builtin_elementwise_atan.
Part of llvm#258 .

1. Added `AddressPointAttr`
2. Change all occurrences of `VTableAddrPointOp` into using the
attribute
3. Update tests

---------

Co-authored-by: Sirui Mu <[email protected]>
Co-authored-by: Morris Hafner <[email protected]>
Co-authored-by: Morris Hafner <[email protected]>
Co-authored-by: Sharp-Edged <[email protected]>
Co-authored-by: Amr Hesham <[email protected]>
Co-authored-by: Bruno Cardoso Lopes <[email protected]>
Co-authored-by: Letu Ren <[email protected]>
Clang relies on `llvm::Intrinsic::getOrInsertDeclaration` to handle
functions marked as `ClangBuiltin` in TableGen. That function receives a
`CodeGenModule*` so CIR can't use that. We need to re-implement parts of
it.
Closes llvm#1367

---------

Co-authored-by: Sirui Mu <[email protected]>
Co-authored-by: Amr Hesham <[email protected]>
Co-authored-by: Chibuoyim (Wilson) Ogbonna <[email protected]>
Co-authored-by: Yue Huang <[email protected]>
Co-authored-by: Morris Hafner <[email protected]>
Co-authored-by: Morris Hafner <[email protected]>
Co-authored-by: Sharp-Edged <[email protected]>
Co-authored-by: Bruno Cardoso Lopes <[email protected]>
Co-authored-by: Letu Ren <[email protected]>
…#1521)

- Part of llvm#70

This is not very useful now, as both branches of interest are NYI. I
will try to implement the real features in subsequent patches.
…ity and maintainability (llvm#1525)

As noted in [this
comment](llvm#1442 (comment)),
the nested if-arms in `GlobalOpLowering` are somewhat confusing and
error-prone. This PR simplifies the logic into more straightforward
components.

Since LLVM's GlobalOp accepts two types of initializers (either an
initializer value or an initializer region), we've extracted the
decision logic into a separate function called `lowerInitializer`. This
function takes two inout arguments: `mlir::Attribute &init` (for the
attribute value) and `bool useInitializerRegion` (as the decision
indicator). All code paths then converge at a common epilogue that
handles the operation rewriting.

The previous implementation for lowering `DataMemberAttr` initializers
relied on recursion between MLIR rewrite calls, which made the control
flow somewhat opaque. The new version makes this explicit by using a
clear self-recursive pattern within `lowerInitializer`.
Fix llvm#1371.

Not sure about whether we could remove `convertTypeForMem` completely.
Let's fix the doc first.
This change moves all declarations of emit* functions in
CIRGenFunction.h into a common location and sorts them alphabetically.
The goal of this change is to make it easier to keep upstream and
incubator code in a consistent location, making functions easier to find
for upstreaming and minimizing conflicts in the incubator when rebasing.

I did most of this sort manually, and I've probably been inconsistent in
how I treat sorting of uppercase versus lowercase. I made no attempt to
provide a rule for ordering different declarations of functions with the
same name. We can improve on that over time if anyone feels the need.

I tried very hard not to drop comments (one of the reasons I had to do
this manually), but I may have lost a few.

This change loses the grouping of some declarations that were co-located
by common purpose, but most of the declarations lacked a coherent
ordering, so I think this is a step forward overall.
This is a rebased version of the inactive PR llvm#1380.

---------

Co-authored-by: koparasy <[email protected]>
Adds implementation for ATanOp's lowering ThroughMLIR.
tommymcm and others added 25 commits July 25, 2025 20:52
Implemented `noexcept` expression handling in CIR generation. 
Added a `noexcept.cpp` test based on cppreference. There was no OG test to base it off of, so I used the example code from [cppreference](https://en.cppreference.com/w/cpp/language/noexcept.html).
I think this one is self-explanatory, so I will not write much 🙂‍

Adding this attribute helps in optimizations like
[llvm#1653](llvm#1653), and using the
attribute it's easy to create operations like
`cir.std.vector.ctor`/`cir.std.vector.dtor` by just modifying
`IdiomRecognizer` a bit. I believe it will also be useful for future
optimizations. Finally, I updated quite a number of tests so they now
reflect this attribute.

Please, let me know if you see any issues.
Implemented opportunistic vtable emission, which marks vtables as
`available_externally` to enable inlining if optimizations are enabled.
Added `GlobalOp` verifier support `available_externally` linkage type,
all cases are covered now, so I removed the `default` case.
Added the `vtable-available-externally` CIRGen test.
Fix lowering Complex to Complex cast, backported from
llvm/llvm-project#149717
…r` (llvm#1753)

Implemented CIR code generation for `CXXPseudoDestructorExpr`. 
Added a pseudo destructor test to `CIR/CodeGen/dtors.cpp`.
…trdecay` to `get_element` when possible (llvm#1761)

Extended the `CIRCanonicalizePass` with new rewrite rules: 
- Rewrite `ptr_stride (cast array_to_ptrdecay %base), %index` to
`get_element %base[%index]`
- Rewrite `ptr_stride (get_element %base[%index]), %stride` to
`get_element %base[%index + %stride]`
- Rewrite `cast array_to_ptrdecay %base, ptr<T>` to `get_element
%base[0], ptr<T>` if it is only used by `load %ptr : T`, `store %val :
T, %ptr`, or `get_member %ptr[field] : ptr<T> -> U`

Updated CodeGen tests, and extended CIR-to-CIR test.

---------

Co-authored-by: Henrich Lauko <[email protected]>
)

`cir::PointerType` was not included in the applicability guard for
`cir::VAArg` lowering during `LoweringPrepare`.
Since we don't have generic LLVM `cir::VAArgOp` (see [more
info](llvm#1088 (comment)))
this causes an NYI error during lowering that doesn't need to happen.
To fix this I added the missing `cir::PointerType` to the `isa`. 
There is probably a more comprehensive fix to this if someone is
interested, this check should be removed and let the (possible) error
occur at the actual NYI site.
- Replaces  dyn_cast<cir::ConstantOp>(v.getDefiningOp()) and similar with v.getDefiningOp<cir::ConstantOp>()
- Adds `getValueAttr`, `getIntValue` and `getBoolValue` methods to ConstantOp
…1747)

(Copied from my question on Discord)
 
I’ve been working on the vector to bit-mask related intrinsics for X86.
I’ve been stuck specifically on
`X86::BI__builtin_ia32_cvtb2mask128(_mm256_movepi16_mask`) and its
variations with different vector/mask sizes.

In this case, we perform a vector comparison of `vector<16xi16>` and
bitcast the resulting `vector<16xi1>` directly into a scalar integer
mask (i16).

I’m successfully able to lower to cir:
```
    ...
    %5 = cir.vec.cmp(lt, %3, %4) : !cir.vector<!s16i x 16>, !cir.vector<!cir.int<u, 1> x 16>
    %6 = cir.cast(bitcast, %5 : !cir.vector<!cir.int<u, 1> x 16>), !u16i
    ...
```

There's an issue arises when lowering this to LLVM, the error message
I'm getting is:

```
error: integer width of the output type is smaller or equal to the integer width of the input type
```

By looking at the test cases on the llvm dialect, this is related to the
sext / zext instruction.

This is the cir → llvm dialect lowered for the latter:

```
        ...
    %14 = "llvm.icmp"(%12, %13) <{predicate = 2 : i64}> : (vector<16xi16>, vector<16xi16>) -> vector<16xi1>
    %15 = "llvm.sext"(%14) : (vector<16xi1>) -> vector<16xi1>
    %16 = "llvm.bitcast"(%15) : (vector<16xi1>) -> i16
        ...
```

This is seems to be the cause:

```
 %15 = "llvm.sext"(%14) : (vector<16xi1>) -> vector<16xi1>
 ```
 
 **The fix**: Added a type check: if the result type does not differ from the expected type, we won't insert a sextOp
Implemented `CXXDeleteExpr` for concrete and virtual destructors.
NYI, global delete, i.e., `::delete`.
Added tests for both destructor types.
For these intrinsics there only seems to be one function where the IR
emmited seems to diverge:

for `_mm_load_sbh` loads a single 16-bit bfloat (__bf16) value from
memory into the lowest element of a 128-bit bfloat vector (__m128bh),
leaving the remaining lanes unchanged or filled with a passthrough
value. It is implemented using a masked load with only the first lane
enabled.

[source for intrinsics with similar
behaviour](https://gist.github.com/leopck/86799fee6ceb9649d0ebe32c1c6e5b85)

In the CIR lowering of `_mm_load_sbh`, we are currently emitting the
mask of intrinsic (`llvm.masked.load`) operand as an explicit constant
vector:

``` llvm
<8 x i1> <true, false, false, false, false, false, false, false>
```
whereas OG lowers:
```llvm
<8 x i1> bitcast (<1 x i8> splat (i8 1) to <8 x i1>)
```
I believe both things are semantically equal so:

Is it acceptable for CIR and OG to diverge in this way for masked loads,
or should we aim for parity in how the mask is represented, even if that
reduces readability in CIR?
Implement supporting for CK_LValueToRValueBitCast for ComplexType
llvm#1768)

The `cir.va_arg` lowering may introduce an if-else control flow. 
This breaks the verifier for control flow operations, e.g., `cir.for`,
where there can be only one block inside of the `cond` and `step`
regions.
This PR wraps the lowered code in a `cir.scope` (only if it will lower
to the if-else control flow). A
dded a test for `va_arg` inside for loop condition, the basic pattern
is: `for (; va_arg(...););`
… group (llvm#1772)

Bumps the github-actions group with 1 update:
[github/codeql-action](https://github.com/github/codeql-action).

Updates `github/codeql-action` from 3.29.2 to 3.29.5
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/github/codeql-action/releases">github/codeql-action's
releases</a>.</em></p>
<blockquote>
<h2>v3.29.5</h2>
<h1>CodeQL Action Changelog</h1>
<p>See the <a
href="https://github.com/github/codeql-action/releases">releases
page</a> for the relevant changes to the CodeQL CLI and language
packs.</p>
<h2>3.29.5 - 29 Jul 2025</h2>
<ul>
<li>Update default CodeQL bundle version to 2.22.2. <a
href="https://redirect.github.com/github/codeql-action/pull/2986">#2986</a></li>
</ul>
<p>See the full <a
href="https://github.com/github/codeql-action/blob/v3.29.5/CHANGELOG.md">CHANGELOG.md</a>
for more information.</p>
<h2>v3.29.4</h2>
<h1>CodeQL Action Changelog</h1>
<p>See the <a
href="https://github.com/github/codeql-action/releases">releases
page</a> for the relevant changes to the CodeQL CLI and language
packs.</p>
<h2>3.29.4 - 23 Jul 2025</h2>
<p>No user facing changes.</p>
<p>See the full <a
href="https://github.com/github/codeql-action/blob/v3.29.4/CHANGELOG.md">CHANGELOG.md</a>
for more information.</p>
<h2>v3.29.3</h2>
<h1>CodeQL Action Changelog</h1>
<p>See the <a
href="https://github.com/github/codeql-action/releases">releases
page</a> for the relevant changes to the CodeQL CLI and language
packs.</p>
<h2>3.29.3 - 21 Jul 2025</h2>
<p>No user facing changes.</p>
<p>See the full <a
href="https://github.com/github/codeql-action/blob/v3.29.3/CHANGELOG.md">CHANGELOG.md</a>
for more information.</p>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/github/codeql-action/blob/main/CHANGELOG.md">github/codeql-action's
changelog</a>.</em></p>
<blockquote>
<h1>CodeQL Action Changelog</h1>
<p>See the <a
href="https://github.com/github/codeql-action/releases">releases
page</a> for the relevant changes to the CodeQL CLI and language
packs.</p>
<h2>[UNRELEASED]</h2>
<p>No user facing changes.</p>
<h2>3.29.5 - 29 Jul 2025</h2>
<ul>
<li>Update default CodeQL bundle version to 2.22.2. <a
href="https://redirect.github.com/github/codeql-action/pull/2986">#2986</a></li>
</ul>
<h2>3.29.4 - 23 Jul 2025</h2>
<p>No user facing changes.</p>
<h2>3.29.3 - 21 Jul 2025</h2>
<p>No user facing changes.</p>
<h2>3.29.2 - 30 Jun 2025</h2>
<ul>
<li>Experimental: When the <code>quality-queries</code> input for the
<code>init</code> action is provided with an argument, separate
<code>.quality.sarif</code> files are produced and uploaded for each
language with the results of the specified queries. Do not use this in
production as it is part of an internal experiment and subject to change
at any time. <a
href="https://redirect.github.com/github/codeql-action/pull/2935">#2935</a></li>
</ul>
<h2>3.29.1 - 27 Jun 2025</h2>
<ul>
<li>Fix bug in PR analysis where user-provided <code>include</code>
query filter fails to exclude non-included queries. <a
href="https://redirect.github.com/github/codeql-action/pull/2938">#2938</a></li>
<li>Update default CodeQL bundle version to 2.22.1. <a
href="https://redirect.github.com/github/codeql-action/pull/2950">#2950</a></li>
</ul>
<h2>3.29.0 - 11 Jun 2025</h2>
<ul>
<li>Update default CodeQL bundle version to 2.22.0. <a
href="https://redirect.github.com/github/codeql-action/pull/2925">#2925</a></li>
<li>Bump minimum CodeQL bundle version to 2.16.6. <a
href="https://redirect.github.com/github/codeql-action/pull/2912">#2912</a></li>
</ul>
<h2>3.28.21 - 28 July 2025</h2>
<p>No user facing changes.</p>
<h2>3.28.20 - 21 July 2025</h2>
<ul>
<li>Remove support for combining SARIF files from a single upload for
GHES 3.18, see <a
href="https://github.blog/changelog/2024-05-06-code-scanning-will-stop-combining-runs-from-a-single-upload/">the
changelog post</a>. <a
href="https://redirect.github.com/github/codeql-action/pull/2959">#2959</a></li>
</ul>
<h2>3.28.19 - 03 Jun 2025</h2>
<ul>
<li>The CodeQL Action no longer includes its own copy of the extractor
for the <code>actions</code> language, which is currently in public
preview.
The <code>actions</code> extractor has been included in the CodeQL CLI
since v2.20.6. If your workflow has enabled the <code>actions</code>
language <em>and</em> you have pinned
your <code>tools:</code> property to a specific version of the CodeQL
CLI earlier than v2.20.6, you will need to update to at least CodeQL
v2.20.6 or disable
<code>actions</code> analysis.</li>
<li>Update default CodeQL bundle version to 2.21.4. <a
href="https://redirect.github.com/github/codeql-action/pull/2910">#2910</a></li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/github/codeql-action/commit/51f77329afa6477de8c49fc9c7046c15b9a4e79d"><code>51f7732</code></a>
Merge pull request <a
href="https://redirect.github.com/github/codeql-action/issues/2997">#2997</a>
from github/update-v3.29.5-80a09d7b0</li>
<li><a
href="https://github.com/github/codeql-action/commit/8e90243ddbe0de3f12f4fa361675387b7f94c48d"><code>8e90243</code></a>
Update changelog for v3.29.5</li>
<li><a
href="https://github.com/github/codeql-action/commit/80a09d7b0b5468297f127c81b43cb7335eed0f30"><code>80a09d7</code></a>
Merge pull request <a
href="https://redirect.github.com/github/codeql-action/issues/2996">#2996</a>
from github/dependabot/npm_and_yarn/npm-240ab9fad0</li>
<li><a
href="https://github.com/github/codeql-action/commit/8388115dc8d6af25bf915cc8455a7d6a77253970"><code>8388115</code></a>
Merge pull request <a
href="https://redirect.github.com/github/codeql-action/issues/2994">#2994</a>
from github/mergeback/changelog/v3.28.21</li>
<li><a
href="https://github.com/github/codeql-action/commit/401ecaf503b1a19fc0fbd253cc5afe7759870068"><code>401ecaf</code></a>
Merge branch 'main' into mergeback/changelog/v3.28.21</li>
<li><a
href="https://github.com/github/codeql-action/commit/ab5c0c5fa56442a68c2d51b194ccc93faaaaa639"><code>ab5c0c5</code></a>
Merge branch 'main' into dependabot/npm_and_yarn/npm-240ab9fad0</li>
<li><a
href="https://github.com/github/codeql-action/commit/cd264d4dcdc5ee89d8590821e29c66a1bdcaa968"><code>cd264d4</code></a>
Merge pull request <a
href="https://redirect.github.com/github/codeql-action/issues/2986">#2986</a>
from github/update-bundle/codeql-bundle-v2.22.2</li>
<li><a
href="https://github.com/github/codeql-action/commit/4599055b1e273f63344615ade2c46c852c6d5c63"><code>4599055</code></a>
Merge branch 'main' into update-bundle/codeql-bundle-v2.22.2</li>
<li><a
href="https://github.com/github/codeql-action/commit/fd7ad511e6bd5985ebbc84944e0e173d39a968b8"><code>fd7ad51</code></a>
Merge pull request <a
href="https://redirect.github.com/github/codeql-action/issues/2971">#2971</a>
from github/update-supported-enterprise-server-versions</li>
<li><a
href="https://github.com/github/codeql-action/commit/ac0c9bfe1e34d6a76860325c1b4abe8208ce98a6"><code>ac0c9bf</code></a>
Merge branch 'main' into
update-supported-enterprise-server-versions</li>
<li>Additional commits viewable in <a
href="https://github.com/github/codeql-action/compare/181d5eefc20863364f96762470ba6f862bdef56b...51f77329afa6477de8c49fc9c7046c15b9a4e79d">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=github/codeql-action&package-manager=github_actions&previous-version=3.29.2&new-version=3.29.5)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore <dependency name> major version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's major version (unless you unignore this specific
dependency's major version or upgrade to it yourself)
- `@dependabot ignore <dependency name> minor version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's minor version (unless you unignore this specific
dependency's minor version or upgrade to it yourself)
- `@dependabot ignore <dependency name>` will close this group update PR
and stop Dependabot creating any more for the specific dependency
(unless you unignore this specific dependency or upgrade to it yourself)
- `@dependabot unignore <dependency name>` will remove all of the ignore
conditions of the specified dependency
- `@dependabot unignore <dependency name> <ignore condition>` will
remove the ignore condition of the specified dependency and ignore
conditions


</details>

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
…lvm#1773)

Bumps the llvm-docs-requirements group in /llvm/docs with 3 updates:
[certifi](https://github.com/certifi/python-certifi),
[docutils](https://github.com/rtfd/recommonmark) and
[furo](https://github.com/pradyunsg/furo).

Updates `certifi` from 2025.6.15 to 2025.7.14
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/certifi/python-certifi/commit/ddd90c6d726f174c1e5820379dac0f2a8fc723a1"><code>ddd90c6</code></a>
2025.07.14 (<a
href="https://redirect.github.com/certifi/python-certifi/issues/359">#359</a>)</li>
<li><a
href="https://github.com/certifi/python-certifi/commit/d905221c916d51077f5c8071a0f7aa2df2a37c52"><code>d905221</code></a>
2025.07.09 (<a
href="https://redirect.github.com/certifi/python-certifi/issues/358">#358</a>)</li>
<li>See full diff in <a
href="https://github.com/certifi/python-certifi/compare/2025.06.15...2025.07.14">compare
view</a></li>
</ul>
</details>
<br />

Updates `docutils` from 0.21.2 to 0.22
<details>
<summary>Commits</summary>
<ul>
<li>See full diff in <a
href="https://github.com/rtfd/recommonmark/commits">compare
view</a></li>
</ul>
</details>
<br />

Updates `furo` from 2024.8.6 to 2025.7.19
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/pradyunsg/furo/blob/main/docs/changelog.md">furo's
changelog</a>.</em></p>
<blockquote>
<h1>Changelog</h1>
<!-- raw HTML omitted -->
<h2>2025.07.19 -- Frozen Flame</h2>
<ul>
<li>✨ Switch to accessible-pygments themes</li>
<li>✨ Prefetch the sidebar logos</li>
<li>✨ Fix flickering header drop shadow on Safari</li>
<li>Add <code>rel=edit</code> attribute to &quot;Edit this page&quot;
link/icon</li>
<li>Bump NodeJS and npm dependency versions</li>
<li>Bump Saas &amp; Webpack major versions</li>
<li>Improve current page detection to be resilient to sticky elements
above header</li>
<li>Modernise Sass and use <code>@use</code> +
<code>@forward</code></li>
<li>Remove top of code <code>border-radius</code> with captions</li>
<li>Remove &quot;debug printf&quot; for headerTop value</li>
<li>Use distinct images for light and dark mode in the
documentation</li>
<li>Use the modern Saas Modules</li>
</ul>
<h2>2024.08.06 -- Energetic Eminence</h2>
<ul>
<li>✨ Add support for Sphinx 8</li>
<li>✨ Add smoother transitions between breakpoints</li>
<li>Increase specificity of table-wrapper selector</li>
<li>Avoid page breaks inside paragraphs</li>
</ul>
<h2>2024.07.18 -- Dull Denim</h2>
<ul>
<li>Improve how icons are handled and aligned.</li>
<li>Improve scroll event handler.</li>
<li>Hide the copybutton by default.</li>
<li>Fix <code>source_view_link</code> configuration handling.</li>
<li>Fix close tag on pencil icon.</li>
</ul>
<h2>2024.05.06 -- Cheerful Cerulean</h2>
<ul>
<li>✨ Add new custom icons for auto mode, reflecting the currently
active theme.</li>
<li>✨ Add a view this page button.</li>
<li>✨ Add colours and highlighting to &quot;version modified&quot; API
helpers.</li>
<li>✨ Add release information to various customisation knobs.</li>
<li>Make all icons bigger and use a thinner stroke with them.</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/pradyunsg/furo/commit/e2cbfce534e434c9743fae85839790ffb8fea2a2"><code>e2cbfce</code></a>
Prepare release: 2025.07.19</li>
<li><a
href="https://github.com/pradyunsg/furo/commit/2753741615d13f00f2f5a361d9794727558d82ee"><code>2753741</code></a>
Update changelog</li>
<li><a
href="https://github.com/pradyunsg/furo/commit/5dc72a39ca49d45b282dec8fddb484e3c55de341"><code>5dc72a3</code></a>
Prefetch the sidebar logos</li>
<li><a
href="https://github.com/pradyunsg/furo/commit/01eb613b4a68c43f202c92dc50b8c777a2b30294"><code>01eb613</code></a>
Use <code>@use variables as *</code></li>
<li><a
href="https://github.com/pradyunsg/furo/commit/0dab8705452178624fc72559450d538e6958a03d"><code>0dab870</code></a>
Modernise Sass and use <code>@use</code> + <code>@forward</code></li>
<li><a
href="https://github.com/pradyunsg/furo/commit/6a76aa714cbe04ea9cc3cc5f302ccff0cd83dec5"><code>6a76aa7</code></a>
Silence mypy on pygments attributes</li>
<li><a
href="https://github.com/pradyunsg/furo/commit/7d571730477a00c4e843fb20c6d0e7e288a478ab"><code>7d57173</code></a>
Use distinct images for light and dark mode</li>
<li><a
href="https://github.com/pradyunsg/furo/commit/007374a4066190ad1746c367926bb378a402002c"><code>007374a</code></a>
Drop the URL to unsplash</li>
<li><a
href="https://github.com/pradyunsg/furo/commit/03c8880e317707c8d085bbae6ee652d471811dd2"><code>03c8880</code></a>
Make current page section detection resilient to sticky elements above
header...</li>
<li><a
href="https://github.com/pradyunsg/furo/commit/ff34139fc5fb7a3861431bd74cf7d01806058c9b"><code>ff34139</code></a>
Fix flickering header drop shadow (<a
href="https://redirect.github.com/pradyunsg/furo/issues/884">#884</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/pradyunsg/furo/compare/2024.08.06...2025.07.19">compare
view</a></li>
</ul>
</details>
<br />


Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore <dependency name> major version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's major version (unless you unignore this specific
dependency's major version or upgrade to it yourself)
- `@dependabot ignore <dependency name> minor version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's minor version (unless you unignore this specific
dependency's minor version or upgrade to it yourself)
- `@dependabot ignore <dependency name>` will close this group update PR
and stop Dependabot creating any more for the specific dependency
(unless you unignore this specific dependency or upgrade to it yourself)
- `@dependabot unignore <dependency name>` will remove all of the ignore
conditions of the specified dependency
- `@dependabot unignore <dependency name> <ignore condition>` will
remove the ignore condition of the specified dependency and ignore
conditions


</details>

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
We have seem to be generating extra load/store instructions as noted
here for all null values encoded in this patch:

CIR:

```llvm
define dso_local <8 x bfloat> @test_mm_undefined_pbh() #0 {
  %1 = alloca <8 x bfloat>, i64 1, align 16
  %2 = alloca <8 x bfloat>, i64 1, align 16
  store <8 x bfloat> zeroinitializer, ptr %1, align 16
  %3 = load <8 x bfloat>, ptr %1, align 16
  store <8 x bfloat> %3, ptr %2, align 16
  %4 = load <8 x bfloat>, ptr %2, align 16
  ret <8 x bfloat> %4
}
```

whereas OG:

```llvm
define dso_local <8 x bfloat> @test_mm_undefined_pbh() #0 {
entry:
  ret <8 x bfloat> zeroinitializer
}
```
Implement CompoundAssignment from ComplexType to ScalarType
Backporting remove unnecessary ComplexRangeKind
…Attr` (llvm#1778)

Implemented NYI handling for `cir::ConstRecordAttr` in CIR CodeGen
global replacement.

Refactored existing support for `cir::ConstArrayAttr` to share duplicate
code between the two.
This change introduces a new type, cir.vptr, and two new operations,
`cir.vtable.get_vptr` and `cir.vtable.get_virtual_fn_addr` to make
operations involving vptrs more explicit. This also replaces cases where
`cir.vtable.address_point` was being used as a general GEP-like
operation and not actually returning the address point of a vtable.
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.