[all-commits] [llvm/llvm-project] e588c7: [X86] Attempt to fold trunc(srl(load(p), amt) -> lo...

Marco Elver via All-commits all-commits at lists.llvm.org
Tue Oct 28 08:30:21 PDT 2025


  Branch: refs/heads/users/melver/spr/alloctoken-clang-implement-__builtin_alloc_token_infer-and-llvmalloctokenid
  Home:   https://github.com/llvm/llvm-project
  Commit: e588c7fa713d8bdd5c424831ca42136b560ff66b
      https://github.com/llvm/llvm-project/commit/e588c7fa713d8bdd5c424831ca42136b560ff66b
  Author: Simon Pilgrim <llvm-dev at redking.me.uk>
  Date:   2025-10-28 (Tue, 28 Oct 2025)

  Changed paths:
    M llvm/lib/Target/X86/X86ISelLowering.cpp
    M llvm/test/CodeGen/X86/bfloat-calling-conv.ll
    M llvm/test/CodeGen/X86/trunc-srl-load.ll
    M llvm/test/CodeGen/X86/widen-load-of-small-alloca-with-zero-upper-half.ll
    M llvm/test/CodeGen/X86/widen-load-of-small-alloca.ll

  Log Message:
  -----------
  [X86] Attempt to fold trunc(srl(load(p),amt) -> load(p+amt/8) (#165266)

As reported on #164853 - we only attempt to reduce shifted loads for constant shift amounts, but we could do more with non-constant values if value tracking can confirm basic alignments.

This patch determines if a truncated shifted load of scalar integer shifts by a byte aligned amount and replaces the non-constant shift amount with a pointer offset instead.

I had hoped to make this a generic DAG fold, but reduceLoadWidth isn't ready to be converted to a KnownBits value tracking mechanism, and other targets don't have complex address math like X86.

Fixes #164853


  Commit: 44cb8c1e000bbe301e046cf11f7bae915a08b8ab
      https://github.com/llvm/llvm-project/commit/44cb8c1e000bbe301e046cf11f7bae915a08b8ab
  Author: Björn Pettersson <bjorn.a.pettersson at ericsson.com>
  Date:   2025-10-28 (Tue, 28 Oct 2025)

  Changed paths:
    M llvm/utils/lit/lit/TestRunner.py
    A llvm/utils/lit/tests/Inputs/shtest-env-path/lit.cfg
    A llvm/utils/lit/tests/Inputs/shtest-env-path/path.txt
    A llvm/utils/lit/tests/Inputs/shtest-env-path/test.sh
    A llvm/utils/lit/tests/shtest-env-path.py

  Log Message:
  -----------
  [lit] Fix to make "RUN: env PATH=..." work as intended (#165308)

There was a bug in llvm-lit related to setting PATH using env in the
internal shell.

The new PATH wasn't used when looking up the command to be executed. So
when doing things like this in a test case
  RUN: mkdir %t
  RUN: env PATH=%t program ...
the internal shell would search for "program" using the orignal PATH and
not the PATH set by env when preceeding the command.

It seems like this was a simple mistake in commit 57782eff31e9d454,
since the logic to pick a PATH from the cmd_shenv instead of shenv
actually was added in that patch, but the resulting path wasn't used.


  Commit: ec55aa4ef2c773fbc2723f38b7f96365e28f164b
      https://github.com/llvm/llvm-project/commit/ec55aa4ef2c773fbc2723f38b7f96365e28f164b
  Author: Ebuka Ezike <yerimyah1 at gmail.com>
  Date:   2025-10-28 (Tue, 28 Oct 2025)

  Changed paths:
    M lldb/packages/Python/lldbsuite/test/make/Makefile.rules

  Log Message:
  -----------
  [lldb][test] When an external stdlib is specified do not link to the system stdlib (#164462)

On linux if you specify the an external libc++ and clang will still link
to the system's libc++. This patch fixes that.

Fixes https://github.com/llvm/llvm-project/issues/116040


  Commit: cc22c9c4559f9436c9c3f9f2fa95f0c7a3b4b31d
      https://github.com/llvm/llvm-project/commit/cc22c9c4559f9436c9c3f9f2fa95f0c7a3b4b31d
  Author: Clement Courbet <courbet at google.com>
  Date:   2025-10-28 (Tue, 28 Oct 2025)

  Changed paths:
    M compiler-rt/lib/nsan/tests/NSanUnitTest.cpp

  Log Message:
  -----------
  Revert "[nsan] More unit tests for `float128`. (#165248)" (#165391)

This reverts commit 2f869c427b6c800f37147458ac03d1fa6f9ad9d3.

Breaks build on some configurations


  Commit: a8471342fae518796232208929a23c2b8a127a68
      https://github.com/llvm/llvm-project/commit/a8471342fae518796232208929a23c2b8a127a68
  Author: Kunqiu Chen <camsyn at foxmail.com>
  Date:   2025-10-28 (Tue, 28 Oct 2025)

  Changed paths:
    M llvm/include/llvm/IR/AbstractCallSite.h
    M llvm/unittests/IR/AbstractCallSiteTest.cpp

  Log Message:
  -----------
  [AbstractCallSite] Handle Indirect Calls Properly (#163003)

AbstractCallSite handles three types of calls (direct, indirect, and
callback).

This patch fixes the handling of indirect calls in some methods, which
incorrectly assumed that non-direct calls are always callback calls.

Moreover, this PR adds 2 unit tests for direct call type and indirect
call type.

The aforementioned misassumption leads to the following problem:

---
## Problem

When the underlying call is **indirect**, some APIs of
`AbstractCallSite` behave unexpectedly.
E.g., `AbstractCallSite::getCalledFunction()` currently triggers an
**assertion failure**, instead of returning `nullptr` as documented:

```cpp
/// Return the function being called if this is a direct call, otherwise
/// return null (if it's an indirect call).
Function *getCalledFunction() const;
```

Actual unexpected assertion failure:
```
AbstractCallSite.h:197: int llvm::AbstractCallSite::getCallArgOperandNoForCallee() const: Assertion `isCallbackCall()' failed.
```

This is because `AbstractCallSite` mistakenly entered the branch that
handles Callback Calls as its guard condition (`!isDirectCall()`) does
not take into account the case of indirect calls


  Commit: f162488b9468fe16671e254331e0d12f713127c4
      https://github.com/llvm/llvm-project/commit/f162488b9468fe16671e254331e0d12f713127c4
  Author: Paul Walker <paul.walker at arm.com>
  Date:   2025-10-28 (Tue, 28 Oct 2025)

  Changed paths:
    M clang/test/CodeGen/AArch64/neon-across.c

  Log Message:
  -----------
  [NFC][Clang] Regenerate CHECKs - CodeGen/AArch64/neon-across.c


  Commit: 29c830cbf8c65fcab7f96f92c8466cbcc9924dd1
      https://github.com/llvm/llvm-project/commit/29c830cbf8c65fcab7f96f92c8466cbcc9924dd1
  Author: Jordan Rupprecht <rupprecht at google.com>
  Date:   2025-10-28 (Tue, 28 Oct 2025)

  Changed paths:
    M llvm/test/tools/llvm-dwarfdump/X86/type_units_split_dwp_v4.s

  Log Message:
  -----------
  [test][DebugInfo] Fix location of test build artifacts (#165349)

The test added in #161067 writes artifacts to the current dir, i.e.
`test.o` / `test.dwo` / `test.dwp`, which might not be writeable. Tests
should use `%t` for test artifact location, i.e. `%t.o` / `%t.dwo` /
`%t.dwp` However, since `"test.dwo"` is part of the assembly source file
used as a test input, and that's not something lit will substitute, that
typical approach doesn't work. We can instead ensure the output is in a
good location by running `cd %t` (after setting it up).


  Commit: 566c7311d4497ab55db36fcae44579dc244fa4a4
      https://github.com/llvm/llvm-project/commit/566c7311d4497ab55db36fcae44579dc244fa4a4
  Author: Kunqiu Chen <camsyn at foxmail.com>
  Date:   2025-10-28 (Tue, 28 Oct 2025)

  Changed paths:
    A llvm/test/tools/UpdateTestChecks/update_test_checks/Inputs/switch_case.ll
    A llvm/test/tools/UpdateTestChecks/update_test_checks/Inputs/switch_case.ll.expected
    A llvm/test/tools/UpdateTestChecks/update_test_checks/switch_case.test
    M llvm/utils/UpdateTestChecks/common.py
    M llvm/utils/update_test_checks.py

  Log Message:
  -----------
  [UTC] Indent switch cases (#165212)

LLVM prints switch cases indented by 2 additional spaces, as follows:
```LLVM
  switch i32 %x, label %default [
    i32 0, label %phi
    i32 1, label %phi
  ]
```

Since this only changes the output IR of update_test_checks.py and does
not change the logic of the File Check Pattern, there seems to be no
need to update the existing test cases.


  Commit: d30bd27e7f98c4bf752c50d7189f35ebbf742c3e
      https://github.com/llvm/llvm-project/commit/d30bd27e7f98c4bf752c50d7189f35ebbf742c3e
  Author: Aleksei Nurmukhametov <anurmukh at amd.com>
  Date:   2025-10-28 (Tue, 28 Oct 2025)

  Changed paths:
    M mlir/lib/Conversion/ComplexToStandard/ComplexToStandard.cpp
    M mlir/test/Conversion/ComplexToStandard/convert-to-standard.mlir
    M mlir/test/Integration/Dialect/Complex/CPU/correctness.mlir

  Log Message:
  -----------
  [mlir][complex] Fix exp accuracy (#164952)

This ports openxla/stablehlo#2682 implementation by @pearu.

Three tests were added to
`Integration/Dialect/Complex/CPU/correctness.mlir`. I also verified
accuracy using XLA's complex_unary_op_test and its MLIR emitters.


  Commit: e5bb946d1818fb545b36c1b84abf3ab46f4faa5b
      https://github.com/llvm/llvm-project/commit/e5bb946d1818fb545b36c1b84abf3ab46f4faa5b
  Author: Fateme Hosseini <quic_fhossein at quicinc.com>
  Date:   2025-10-28 (Tue, 28 Oct 2025)

  Changed paths:
    M llvm/lib/Target/Hexagon/HexagonISelLoweringHVX.cpp
    A llvm/test/CodeGen/Hexagon/inst_masked_store_bug1.ll

  Log Message:
  -----------
  Bug fixes for ISelLowering for HVX (#164416)

1. createHvxPrefixPred was computing an invalid byte count for small
predicate types, leading to a crash during instruction selection.
2. HexagonTargetLowering::SplitHvxMemOp assumed the memory vector type
is always simple. This patch adds a guard to avoid processing non-simple
vector types, which can lead to failure.

Patch By:
Fateme Hosseini

Co-authored-by: pavani karveti <quic_pkarveti at quicinc.com>
Co-authored-by: Sergei Larin <slarin at quicinc.com>
Co-authored-by: Pavani Karveti <pkarveti at qti.qualcomm.com>


  Commit: 0621fd0b8837192612d21785ad60664516513cea
      https://github.com/llvm/llvm-project/commit/0621fd0b8837192612d21785ad60664516513cea
  Author: Connector Switch <c8ef at outlook.com>
  Date:   2025-10-28 (Tue, 28 Oct 2025)

  Changed paths:
    M libcxx/docs/ReleaseNotes/22.rst
    M libcxx/include/__algorithm/generate_n.h
    M libcxx/include/__algorithm/ranges_generate_n.h

  Log Message:
  -----------
  [libcxx] Optimize `rng::generate_n` for segmented iterators (#165280)

Part of #102817.

This patch optimizes `rng::generate_n` for segmented iterators by
forwarding the implementation directly to `std::generate_n`.

- before

```
rng::generate_n(deque<int>)/32          21.7 ns         22.0 ns     32000000
rng::generate_n(deque<int>)/50          30.8 ns         30.7 ns     22400000
rng::generate_n(deque<int>)/1024         492 ns          488 ns      1120000
rng::generate_n(deque<int>)/8192        3938 ns         3924 ns       179200
```

- after

```
rng::generate_n(deque<int>)/32          11.0 ns         11.0 ns     64000000
rng::generate_n(deque<int>)/50          16.2 ns         16.1 ns     40727273
rng::generate_n(deque<int>)/1024         292 ns          286 ns      2240000
rng::generate_n(deque<int>)/8192        2291 ns         2302 ns       298667
```


  Commit: 531fd45e9238d0485e3268aaf14ae15d01c7740f
      https://github.com/llvm/llvm-project/commit/531fd45e9238d0485e3268aaf14ae15d01c7740f
  Author: Shimin Cui <scui at ca.ibm.com>
  Date:   2025-10-28 (Tue, 28 Oct 2025)

  Changed paths:
    M llvm/include/llvm/CodeGen/BasicTTIImpl.h
    M llvm/include/llvm/CodeGen/TargetLowering.h
    M llvm/lib/CodeGen/SwitchLoweringUtils.cpp
    M llvm/lib/CodeGen/TargetLoweringBase.cpp
    M llvm/lib/Target/PowerPC/PPCISelLowering.cpp
    A llvm/test/CodeGen/PowerPC/bittest.ll

  Log Message:
  -----------
  [PPC] Set minimum of largest number of comparisons to use bit test for switch lowering (#155910)

Currently it is considered suitable to lower to a bit test for a set of
switch case clusters when the the number of unique destinations
(`NumDests`) and the number of total comparisons (`NumCmps`) satisfy:
`(NumDests == 1 && NumCmps >= 3) || (NumDests == 2 && NumCmps >= 5) ||
(NumDests == 3 && NumCmps >= 6)`

However it is found for some cases on powerpc, for example, when
NumDests is 3, and the number of comparisons for each destination is all
2, it's not profitable to lower the switch to bit test. This is to add
an option to set the minimum of largest number of comparisons to use bit
test for switch lowering.

---------

Co-authored-by: Shimin Cui <scui at xlperflep9.rtp.raleigh.ibm.com>


  Commit: a4950c4fa137cdb80d0d697179a00f5de6816af2
      https://github.com/llvm/llvm-project/commit/a4950c4fa137cdb80d0d697179a00f5de6816af2
  Author: Mircea Trofin <mtrofin at google.com>
  Date:   2025-10-28 (Tue, 28 Oct 2025)

  Changed paths:
    M llvm/utils/profcheck-xfail.txt

  Log Message:
  -----------
  Add switch_case.test to profcheck-xfail.txt (#165407)


  Commit: bfb54e8ba6262a509343985c018f9a8d52963734
      https://github.com/llvm/llvm-project/commit/bfb54e8ba6262a509343985c018f9a8d52963734
  Author: Benjamin Maxwell <benjamin.maxwell at arm.com>
  Date:   2025-10-28 (Tue, 28 Oct 2025)

  Changed paths:
    M llvm/lib/Target/AArch64/AArch64ISelLowering.cpp
    M llvm/test/CodeGen/AArch64/sme-zt0-state.ll

  Log Message:
  -----------
  [AArch64][SME] Disable tail calls for callees that require saving ZT0 (#165371)

We may need to load ZT0 after the call, so we can't perform a tail call.


  Commit: 2aea02da79a7daae391b98e851c4b53c0b8dc84b
      https://github.com/llvm/llvm-project/commit/2aea02da79a7daae391b98e851c4b53c0b8dc84b
  Author: Dan Blackwell <dan_blackwell at apple.com>
  Date:   2025-10-28 (Tue, 28 Oct 2025)

  Changed paths:
    M compiler-rt/test/fuzzer/reduce_inputs.test

  Log Message:
  -----------
  [Fuzzer][Test-Only] Increase runs for reduce-inputs.test (#165402)

This test fails on some arm64 macOS runs currently.

This patch bumps up the number of runs by 10x to hopefully get it
passing consistently.

rdar://162122184


  Commit: 3172970bbed69f07913f46727d24930f1f60f4e7
      https://github.com/llvm/llvm-project/commit/3172970bbed69f07913f46727d24930f1f60f4e7
  Author: Dan Blackwell <dan_blackwell at apple.com>
  Date:   2025-10-28 (Tue, 28 Oct 2025)

  Changed paths:
    M compiler-rt/test/fuzzer/fuzzer-ubsan.test

  Log Message:
  -----------
  [Fuzzer][Test-Only] Re-enable fuzzer-ubsan.test on Darwin (#165403)

This test is now XPASSing due to a linker update on the platform.

This patch removes the XFAIL from the test.

rdar://163149345


  Commit: 28e9a2832fae1a05d35a9ce68537ec449a5a13c7
      https://github.com/llvm/llvm-project/commit/28e9a2832fae1a05d35a9ce68537ec449a5a13c7
  Author: Matt Arsenault <Matthew.Arsenault at amd.com>
  Date:   2025-10-28 (Tue, 28 Oct 2025)

  Changed paths:
    M llvm/include/llvm/CodeGen/RuntimeLibcallUtil.h
    M llvm/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp
    M llvm/lib/CodeGen/TargetLoweringBase.cpp
    M llvm/lib/Target/ARM/ARMISelLowering.cpp
    M llvm/lib/Target/X86/X86ISelLowering.cpp

  Log Message:
  -----------
  DAG: Consider __sincos_stret when deciding to form fsincos (#165169)


  Commit: 31fd2b03b3308c6cc4a1d0d4a7c9adf05172c453
      https://github.com/llvm/llvm-project/commit/31fd2b03b3308c6cc4a1d0d4a7c9adf05172c453
  Author: Marco Elver <elver at google.com>
  Date:   2025-10-28 (Tue, 28 Oct 2025)

  Changed paths:
    M clang/test/CodeGen/AArch64/neon-across.c
    M compiler-rt/lib/nsan/tests/NSanUnitTest.cpp
    M compiler-rt/test/fuzzer/fuzzer-ubsan.test
    M compiler-rt/test/fuzzer/reduce_inputs.test
    M libcxx/docs/ReleaseNotes/22.rst
    M libcxx/include/__algorithm/generate_n.h
    M libcxx/include/__algorithm/ranges_generate_n.h
    M lldb/packages/Python/lldbsuite/test/make/Makefile.rules
    M llvm/include/llvm/CodeGen/BasicTTIImpl.h
    M llvm/include/llvm/CodeGen/RuntimeLibcallUtil.h
    M llvm/include/llvm/CodeGen/TargetLowering.h
    M llvm/include/llvm/IR/AbstractCallSite.h
    M llvm/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp
    M llvm/lib/CodeGen/SwitchLoweringUtils.cpp
    M llvm/lib/CodeGen/TargetLoweringBase.cpp
    M llvm/lib/Target/AArch64/AArch64ISelLowering.cpp
    M llvm/lib/Target/ARM/ARMISelLowering.cpp
    M llvm/lib/Target/Hexagon/HexagonISelLoweringHVX.cpp
    M llvm/lib/Target/PowerPC/PPCISelLowering.cpp
    M llvm/lib/Target/X86/X86ISelLowering.cpp
    M llvm/test/CodeGen/AArch64/sme-zt0-state.ll
    A llvm/test/CodeGen/Hexagon/inst_masked_store_bug1.ll
    A llvm/test/CodeGen/PowerPC/bittest.ll
    M llvm/test/CodeGen/X86/bfloat-calling-conv.ll
    M llvm/test/CodeGen/X86/trunc-srl-load.ll
    M llvm/test/CodeGen/X86/widen-load-of-small-alloca-with-zero-upper-half.ll
    M llvm/test/CodeGen/X86/widen-load-of-small-alloca.ll
    A llvm/test/tools/UpdateTestChecks/update_test_checks/Inputs/switch_case.ll
    A llvm/test/tools/UpdateTestChecks/update_test_checks/Inputs/switch_case.ll.expected
    A llvm/test/tools/UpdateTestChecks/update_test_checks/switch_case.test
    M llvm/test/tools/llvm-dwarfdump/X86/type_units_split_dwp_v4.s
    M llvm/unittests/IR/AbstractCallSiteTest.cpp
    M llvm/utils/UpdateTestChecks/common.py
    M llvm/utils/lit/lit/TestRunner.py
    A llvm/utils/lit/tests/Inputs/shtest-env-path/lit.cfg
    A llvm/utils/lit/tests/Inputs/shtest-env-path/path.txt
    A llvm/utils/lit/tests/Inputs/shtest-env-path/test.sh
    A llvm/utils/lit/tests/shtest-env-path.py
    M llvm/utils/profcheck-xfail.txt
    M llvm/utils/update_test_checks.py
    M mlir/lib/Conversion/ComplexToStandard/ComplexToStandard.cpp
    M mlir/test/Conversion/ComplexToStandard/convert-to-standard.mlir
    M mlir/test/Integration/Dialect/Complex/CPU/correctness.mlir

  Log Message:
  -----------
  rebase

Created using spr 1.3.8-beta.1


Compare: https://github.com/llvm/llvm-project/compare/7813272e6df4...31fd2b03b330

To unsubscribe from these emails, change your notification settings at https://github.com/llvm/llvm-project/settings/notifications


More information about the All-commits mailing list