LLVM/project 41f453ellvm/lib/CodeGen/SelectionDAG DAGCombiner.cpp, llvm/test/CodeGen/AArch64 sve-streaming-mode-fixed-length-int-mulh.ll sve-streaming-mode-fixed-length-fp-rounding.ll

Revert "[DAG] Enable bitcast STLF for Constant/Undef" (#178872)

Reverts llvm/llvm-project#172523

As explained in
https://github.com/llvm/llvm-project/pull/172523#issuecomment-3823234270
(along with reproducer), this causes compiler crashes building
llvm-test-suite for RVV targets.
DeltaFile
+0-71llvm/test/CodeGen/X86/dag-stlf-mismatch.ll
+22-8llvm/test/CodeGen/AArch64/sve-streaming-mode-fixed-length-int-mulh.ll
+3-26llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp
+14-0llvm/test/CodeGen/AArch64/sve-streaming-mode-fixed-length-fp-rounding.ll
+8-4llvm/test/CodeGen/AArch64/sve-streaming-mode-fixed-length-fp-to-int.ll
+0-12llvm/test/CodeGen/RISCV/rvv/stlf.ll
+47-12136 files not shown
+172-18742 files

LLVM/project c88dd45llvm/test/DebugInfo/Generic debug-label-mi.ll, llvm/test/Feature optnone-llc.ll

[AArch64][GlobalISel] Exclude arm64 from failing tests (#178849)

As pointed out by the buildbots &
https://github.com/llvm/llvm-project/pull/174746#issuecomment-3821237987,
some of the tests modified by
https://github.com/llvm/llvm-project/pull/174746 are missing exclusions
for arm64 target triples causing the builds to fail.

I have added these exclusions here.
DeltaFile
+1-1llvm/test/DebugInfo/Generic/debug-label-mi.ll
+1-1llvm/test/Feature/optnone-llc.ll
+2-22 files

LLVM/project fbffdaamlir/include/mlir/Dialect/GPU/IR CompilationInterfaces.h, mlir/lib/Target/LLVM/NVVM Target.cpp

[MLIR][GPU] Update serializeToObject to use SerializedObject wrapper and include ISA compiler logs (#176697)

This PR makes the compilation log from ISA compiler available to users
by returning it as part of the `gpu::ObjectAttr` properties, following
the existing pattern like `LLVMIRToISATimeInMs`.

Currently, the compiler log (which contains useful information such as
spill statistics when --verbose is passed) is only accessible in debug
builds via `LLVM_DEBUG`. However, there are good reasons to make this
information available in release builds as well:

1. Both `ptxas` and `libnvptxcompiler` are publicly available
tools/libraries distributed with the CUDA Toolkit. The `--verbose` flag
and its output are documented public features, not internal debug
information.
2. The verbose output provides valuable insights for users.

A new `SerializedObject` class is used to carry the metadata alongside
the binary when returning from `serializeObject`.
DeltaFile
+57-28mlir/lib/Target/LLVM/NVVM/Target.cpp
+22-18mlir/unittests/Target/LLVM/SerializeROCDLTarget.cpp
+21-18mlir/unittests/Target/LLVM/SerializeToLLVMBitcode.cpp
+18-14mlir/unittests/Target/LLVM/SerializeNVVMTarget.cpp
+12-8mlir/lib/Target/LLVM/ROCDL/Target.cpp
+19-0mlir/include/mlir/Dialect/GPU/IR/CompilationInterfaces.h
+149-868 files not shown
+191-10114 files

LLVM/project e8f70c9llvm/lib/CodeGen/SelectionDAG DAGCombiner.cpp, llvm/test/CodeGen/AArch64 sve-streaming-mode-fixed-length-int-mulh.ll sve-streaming-mode-fixed-length-fp-rounding.ll

Revert "[DAG] Enable bitcast STLF for Constant/Undef (#172523)"

This reverts commit d3c64633c3a17edd370280eb09668c8c3927383e.
DeltaFile
+0-71llvm/test/CodeGen/X86/dag-stlf-mismatch.ll
+22-8llvm/test/CodeGen/AArch64/sve-streaming-mode-fixed-length-int-mulh.ll
+3-26llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp
+14-0llvm/test/CodeGen/AArch64/sve-streaming-mode-fixed-length-fp-rounding.ll
+8-4llvm/test/CodeGen/AArch64/sve-streaming-mode-fixed-length-int-minmax.ll
+0-12llvm/test/CodeGen/AArch64/sve-stlf.ll
+47-12136 files not shown
+172-18742 files

LLVM/project 1ce7a81compiler-rt/include/fuzzer FuzzedDataProvider.h

fuzzer: modernize FuzzedDataProvider conversions (#177794)

This change modernizes FuzzedDataProvider.h now that C++17+ is standard
in LLVM.
Replace the runtime if with if constexpr in ConvertUnsignedToSigned
Make the unsigned/signed comparison explicit by casting TS::max() to TU
DeltaFile
+3-3compiler-rt/include/fuzzer/FuzzedDataProvider.h
+3-31 files

LLVM/project 10afcd4flang/test/Lower derived-pointer-components.f90 do_loop.f90

[flang][NFC] Converted five tests from old lowering to new lowering (part 12) (#178831)

Tests converted from test/Lower: derived-pointer-components.f90,
derived-type-finalization.f90, derived-types.f90, do_loop.f90,
do_loop_unstructured.f90
DeltaFile
+376-378flang/test/Lower/derived-pointer-components.f90
+83-67flang/test/Lower/do_loop.f90
+65-53flang/test/Lower/derived-types.f90
+44-63flang/test/Lower/derived-type-finalization.f90
+29-23flang/test/Lower/do_loop_unstructured.f90
+597-5845 files

LLVM/project 07ec2fallvm/lib/Analysis ValueTracking.cpp, llvm/test/Transforms/Attributor nofpclass-fma.ll nofpclass-fmul.ll

ValueTracking: Revert noundef checks in computeKnownFPClass for fmul/fma (#178850)

This functionally reverts fd5cfcc41311c6287e9dc408b8aae499501660e1 and
35ce17b6f6ca5dd321af8e6763554b10824e4ac4.

This was correct and necessary, but is causing performance regressions
since isGuaranteedNotToBeUndef is apparently not smart enough to detect
through recurrences. Revert this for the release branch.

Also the test coverage was inadequate for the fma case, so add a new
case which changes with and without the check.
DeltaFile
+24-0llvm/test/Transforms/Attributor/nofpclass-fma.ll
+4-5llvm/lib/Analysis/ValueTracking.cpp
+1-1llvm/test/Transforms/Attributor/nofpclass-fmul.ll
+29-63 files

LLVM/project 3d01fffllvm/test/CodeGen/SPIRV/transcoding OpGroupAsyncCopy-strided-64.ll

Merge branch 'users/mgcarrasco/spirv/fix-spirv-val-tests' into users/jmmartinez/spirv/memory_consumption
DeltaFile
+0-1llvm/test/CodeGen/SPIRV/transcoding/OpGroupAsyncCopy-strided-64.ll
+0-11 files

LLVM/project 40f2a5dllvm/lib/Target/AMDGPU AMDGPURegBankLegalizeHelper.cpp AMDGPURegBankLegalizeRules.cpp, llvm/test/CodeGen/AMDGPU/GlobalISel fpext.ll unmerge-sgpr-s16.ll

AMDGPU/GlobalISel: Regbanklegalize rules for G_UNMERGE_VALUES

Move G_UNMERGE_VALUES handling to AMDGPURegBankLegalizeRules.cpp.
Fix sgpr S16 unmerge by lowering using shift and using S32.
Previously sgpr S16 unmerge was selected using _lo16 and _hi16 subreg
indexes which are exclusive to vgpr register classes.
For remaing cases we do trivial mapping, assigns same reg bank
to all operands, vgpr or sgpr.
DeltaFile
+47-0llvm/lib/Target/AMDGPU/AMDGPURegBankLegalizeHelper.cpp
+13-27llvm/test/CodeGen/AMDGPU/GlobalISel/fpext.ll
+36-0llvm/test/CodeGen/AMDGPU/GlobalISel/unmerge-sgpr-s16.ll
+24-0llvm/lib/Target/AMDGPU/AMDGPURegBankLegalizeRules.cpp
+14-9llvm/test/CodeGen/AMDGPU/GlobalISel/uaddsat.ll
+14-9llvm/test/CodeGen/AMDGPU/GlobalISel/usubsat.ll
+148-452 files not shown
+156-498 files

LLVM/project 8370304lldb/source/API SBBreakpointName.cpp, lldb/test/API/functionalities/breakpoint/breakpoint_names TestBreakpointNames.py

[lldb] Fix SBBreakpointName::SetEnabled to propagate changes to breakpoints (#178734)

When setting the enabled state of a breakpoint name via the API, the
change was not being propagated to breakpoints using that name.
This was inconsistent with the CLI behaviour where `breakpoint name
configure --enable/--disable` correctly updates all associated
breakpoints.
DeltaFile
+66-2lldb/test/API/functionalities/breakpoint/breakpoint_names/TestBreakpointNames.py
+1-0lldb/source/API/SBBreakpointName.cpp
+67-22 files

LLVM/project f5c80a6clang/lib/CodeGen/TargetBuiltins AMDGPU.cpp, clang/lib/Sema SemaAMDGPU.cpp

Address comments
DeltaFile
+51-0clang/test/CodeGenHIP/builtins-amdgcn-gfx1250-cooperative-atomics-templated.hip
+24-14clang/lib/Sema/SemaAMDGPU.cpp
+32-0clang/test/SemaHIP/builtins-amdgcn-gfx1250-cooperative-atomics-templated.hip
+12-17clang/lib/CodeGen/TargetBuiltins/AMDGPU.cpp
+26-0clang/test/SemaHIP/builtins-amdgcn-gfx1250-load-monitor-templated.hip
+25-0clang/test/CodeGenHIP/builtins-amdgcn-gfx1250-load-monitor-templated.hip
+170-311 files not shown
+175-377 files

LLVM/project 3bf2c83lldb/source/Plugins/Process/scripted ScriptedFrame.cpp

[lldb] Clean up #includes. NFC.
DeltaFile
+4-6lldb/source/Plugins/Process/scripted/ScriptedFrame.cpp
+4-61 files

LLVM/project 956770allvm/lib/Transforms/Utils SimplifyCFG.cpp, llvm/test/Transforms/SimplifyCFG jump-threading.ll

[SimplifyCFG] Fix null pointer dereference in foldCondBranchOnValueKnownInPredecessorImpl (#178835)

DeltaFile
+41-0llvm/test/Transforms/SimplifyCFG/jump-threading.ll
+2-0llvm/lib/Transforms/Utils/SimplifyCFG.cpp
+43-02 files

LLVM/project c8132f3llvm/test/CodeGen/SPIRV event-zero-const-64.ll event-zero-const.ll, llvm/test/CodeGen/SPIRV/transcoding spirv-event-null.ll spirv-event-null-64.ll

[SPIRV] Split async copy tests and fix invalid tests

After a spirv-val update, tests that mix spirv32 and spirv64 targets with
the same LLVM IR are now correctly flagged as invalid. The SPIR-V
specification requires that NumElements and Stride operands in
OpGroupAsyncCopy must be 32-bit integers when the addressing model is
Physical32, and 64-bit integers for Physical64.
DeltaFile
+55-52llvm/test/CodeGen/SPIRV/transcoding/spirv-event-null.ll
+101-0llvm/test/CodeGen/SPIRV/transcoding/spirv-event-null-64.ll
+37-0llvm/test/CodeGen/SPIRV/transcoding/OpGroupAsyncCopy-strided-64.ll
+16-15llvm/test/CodeGen/SPIRV/transcoding/OpGroupAsyncCopy-strided.ll
+27-0llvm/test/CodeGen/SPIRV/event-zero-const-64.ll
+6-6llvm/test/CodeGen/SPIRV/event-zero-const.ll
+242-736 files

LLVM/project d0ed0acllvm/lib/Analysis ValueTracking.cpp, llvm/test/Transforms/Attributor nofpclass-fma.ll nofpclass-fmul.ll

ValueTracking: Revert noundef checks in computeKnownFPClass for fmul/fma

This functionally reverts fd5cfcc41311c6287e9dc408b8aae499501660e1 and
35ce17b6f6ca5dd321af8e6763554b10824e4ac4.

This was correct and necessary, but is causing performance regressions
since isGuaranteedNotToBeUndef is apparently not smart enough to detect
through recurrences. Revert this for the release branch.

Also the test coverage was inadequate for the fma case, so add a new
case which changes with and without the check.
DeltaFile
+24-0llvm/test/Transforms/Attributor/nofpclass-fma.ll
+4-5llvm/lib/Analysis/ValueTracking.cpp
+1-1llvm/test/Transforms/Attributor/nofpclass-fmul.ll
+29-63 files

LLVM/project 710449bllvm/test/CodeGen/AMDGPU amdgcn.bitcast.1024bit.ll amdgcn.bitcast.512bit.ll

Merge branch 'users/mgcarrasco/spirv/fix-spirv-val-tests' into users/jmmartinez/spirv/memory_consumption
DeltaFile
+93,308-106,563llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.1024bit.ll
+33,140-38,089llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.512bit.ll
+12,028-14,711llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.320bit.ll
+7,381-11,318llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.960bit.ll
+8,488-9,853llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.256bit.ll
+6,645-10,108llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.896bit.ll
+160,990-190,6421,832 files not shown
+327,251-331,0191,838 files

LLVM/project 369e787llvm/include/llvm/Target/GlobalISel Combine.td, llvm/test/CodeGen/AMDGPU/GlobalISel postlegalizer-combiner-merge.mir

[GlobalISel] Insert bitcast instead of register replacement when types don't match. (#177397)

Cases like the newly added test with the vector types currently hit
```Assertion `canReplaceReg(OldReg, Replacement, MRI) && \"Cannot
replace register?\"' failed."``` because source and destination
registers have mismatching types. Apart from the assertion, it also
fails when using `--verify-machineinstrs`. This PR adds a bitcast in
those cases.
DeltaFile
+58-4llvm/include/llvm/Target/GlobalISel/Combine.td
+47-0llvm/test/CodeGen/AMDGPU/GlobalISel/postlegalizer-combiner-merge.mir
+105-42 files

LLVM/project 4238693llvm/lib/Target/AMDGPU SIISelLowering.cpp SIInstructions.td, llvm/test/CodeGen/AMDGPU llvm.amdgcn.reduce.fmin.ll llvm.amdgcn.reduce.fmax.ll

[AMDGPU] Add wave reduce intrinsics for double types - 1 (#170811)

Supported Ops: `min`, `max`
DeltaFile
+1,280-0llvm/test/CodeGen/AMDGPU/llvm.amdgcn.reduce.fmin.ll
+1,280-0llvm/test/CodeGen/AMDGPU/llvm.amdgcn.reduce.fmax.ll
+70-1llvm/lib/Target/AMDGPU/SIISelLowering.cpp
+3-1llvm/lib/Target/AMDGPU/SIInstructions.td
+2,633-24 files

LLVM/project d3c6463llvm/lib/CodeGen/SelectionDAG DAGCombiner.cpp, llvm/test/CodeGen/AArch64 sve-streaming-mode-fixed-length-int-mulh.ll sve-streaming-mode-fixed-length-fp-rounding.ll

[DAG] Enable bitcast STLF for Constant/Undef (#172523)

This patch introduces support for Store-to-Load Forwarding (STLF) in
`DAGCombiner::ForwardStoreValueToDirectLoad` when the store and load
have **different types but equal memory size** (e.g., storing an `i32`
then loading a `float` from the same location).

### What this patch does:
**Enables Optimization:** It allows for the safe forwarding of the
stored value as a Bitcast when the value is:
* A **Constant** (`ConstantSDNode`, `ConstantFPSDNode`,
`ConstantPoolSDNode`).
    * **Undef**.
    * And the memory sizes (`LdMemSize` == `StMemSize`) match.

### Scope and Next Steps:

This patch **only implements forwarding for constant and undef values
that has the same memory size** so far.

    [14 lines not shown]
DeltaFile
+71-0llvm/test/CodeGen/X86/dag-stlf-mismatch.ll
+8-22llvm/test/CodeGen/AArch64/sve-streaming-mode-fixed-length-int-mulh.ll
+26-3llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp
+0-14llvm/test/CodeGen/AArch64/sve-streaming-mode-fixed-length-fp-rounding.ll
+4-8llvm/test/CodeGen/AArch64/sve-streaming-mode-fixed-length-int-arith.ll
+12-0llvm/test/CodeGen/AArch64/sve-stlf.ll
+121-4736 files not shown
+187-17242 files

LLVM/project 034e5d6llvm/lib/Transforms/Scalar MemCpyOptimizer.cpp, llvm/test/Transforms/MemCpyOpt memset-memcpy-oversized.ll lifetime-missing.ll

[MemCpyOpt] Extend `performMemCpyToMemSetOptzn` to partially memset'd region

While doing memset-to-memcpy forwarding, take into account memset
that covers memory regions from a given offset, and the leading
bytes of such a region are undef.

Fixes: https://github.com/llvm/llvm-project/issues/172326.
DeltaFile
+36-18llvm/lib/Transforms/Scalar/MemCpyOptimizer.cpp
+10-5llvm/test/Transforms/MemCpyOpt/memset-memcpy-oversized.ll
+5-1llvm/test/Transforms/MemCpyOpt/lifetime-missing.ll
+51-243 files

LLVM/project 6fdcdbdllvm/test/Transforms/MemCpyOpt memset-memcpy-oversized.ll

[MemCpyOpt] Avoid introducing UB, precommit tests (NFC)
DeltaFile
+108-5llvm/test/Transforms/MemCpyOpt/memset-memcpy-oversized.ll
+108-51 files

LLVM/project afb2e4fclang/lib/AST/ByteCode Function.h Context.cpp

[clang][bytecode] Clean up `interp::Function` parameter handling (#178621)

Replace the multiple data structures with a vector + a map holding all
`ParamDescriptor`s. Update docs.
DeltaFile
+29-15clang/lib/AST/ByteCode/Function.h
+11-22clang/lib/AST/ByteCode/Context.cpp
+9-8clang/lib/AST/ByteCode/ByteCodeEmitter.cpp
+7-5clang/lib/AST/ByteCode/Function.cpp
+4-4clang/lib/AST/ByteCode/InterpFrame.cpp
+2-2clang/lib/AST/ByteCode/Interp.cpp
+62-566 files

LLVM/project e89c634llvm/include/llvm/ADT GenericUniformityImpl.h, llvm/include/llvm/CodeGen TargetInstrInfo.h

Implement per-output machine uniformity analysis
DeltaFile
+66-11llvm/lib/CodeGen/MachineUniformityAnalysis.cpp
+48-11llvm/lib/Target/AMDGPU/SIInstrInfo.cpp
+12-10llvm/include/llvm/ADT/GenericUniformityImpl.h
+9-1llvm/lib/Analysis/UniformityAnalysis.cpp
+5-2llvm/include/llvm/CodeGen/TargetInstrInfo.h
+2-5llvm/test/Analysis/UniformityAnalysis/AMDGPU/MIR/per-output-uniformity.mir
+142-401 files not shown
+146-427 files

LLVM/project cf0f862llvm/test/Analysis/UniformityAnalysis/AMDGPU/MIR per-output-uniformity.mir

Add test for amdgcn.if/else uniformity analysis

This test documents the current behavior where both outputs of
amdgcn.if and amdgcn.else are marked as divergent. The second
output (exec mask) should be uniform.
DeltaFile
+42-0llvm/test/Analysis/UniformityAnalysis/AMDGPU/MIR/per-output-uniformity.mir
+42-01 files

LLVM/project c391efeclang/docs LanguageExtensions.rst, clang/include/clang/Options Options.td

[Driver][Frontend] Add -f[no-]ms-anonymous-structs flag to control Microsoft anonymous struct/union extension                                                                                                                       (#176551)

Add a Clang driver option -fms-anonymous-structs and
-fno-ms-anonymous-structs
to enable or disable Microsoft anonymous struct/union support
independently of -fms-extensions.

**Motivation**:
- On some platforms (e.g. AIX), enabling `-fms-extensions` can conflict
    with system headers (such as usage of `__ptr32`).
  - Some codebases rely specifically on Microsoft anonymous struct/union
    behavior without requiring other Microsoft extensions.

This change allows users to selectively enable the anonymous
struct/union
extension at the driver level without enabling full Microsoft
compatibility
mode.


    [28 lines not shown]
DeltaFile
+76-0clang/test/Sema/MicrosoftAnonymousStructs.c
+54-0clang/lib/Driver/ToolChains/Clang.cpp
+44-0clang/docs/LanguageExtensions.rst
+38-0clang/test/Driver/ms-anonymous-structs.c
+24-0clang/test/Frontend/ms-anon-structs-args.c
+8-0clang/include/clang/Options/Options.td
+244-03 files not shown
+249-19 files

LLVM/project 6944b81lldb/test/API/tools/lldb-dap/completions TestDAP_completions.py, lldb/tools/lldb-dap/Handler CompletionsHandler.cpp

[lldb-dap] Fix the completion provided to the DAP client. (#177151)

Previously, completion behavior was inconsistent,
sometimes including the partial token or removing existing user text.
Since LLDB completions includes the partial token by default, we now
strip it before sending to the client.

The completion heuristic:
1. Strip the commandEscapePrefix
2. Request completions from the debugger
3. Get the line at cursor position
4. Calculate the length of any partial token
5. Offset each completion by the partial token length

In all cases, the completion starts from the cursor position. then
offsets by `Length` to the left and inserts the completion.

Examples (single quotes show whitespace and are not part of the input):
```md

    [15 lines not shown]
DeltaFile
+250-119lldb/test/API/tools/lldb-dap/completions/TestDAP_completions.py
+18-9lldb/tools/lldb-dap/Handler/CompletionsHandler.cpp
+4-4lldb/tools/lldb-dap/Protocol/ProtocolTypes.h
+272-1323 files

LLVM/project 8dcfcf2llvm/test/CodeGen/AMDGPU release-vgprs-spill.ll

[AMDGPU] Add test for early release VGPRs with spills (#178444)

(cherry picked from commit 1873c746c6a79fcfd3f5e5884b42f3843cc7c5aa)
DeltaFile
+49-0llvm/test/CodeGen/AMDGPU/release-vgprs-spill.ll
+49-01 files

LLVM/project 12f90edllvm/lib/Target/AMDGPU SIInstrInfo.cpp, llvm/test/CodeGen/AMDGPU release-vgprs-spill.ll

[AMDGPU] Fix DEALLOC_VGPRS in the presence of spills to scratch (#178461)

(cherry picked from commit dbd42401305b45e4a2854d24a1987d0f01b75754)
DeltaFile
+5-4llvm/lib/Target/AMDGPU/SIInstrInfo.cpp
+1-3llvm/test/CodeGen/AMDGPU/release-vgprs-spill.ll
+6-72 files

LLVM/project f0eba4fmlir/lib/Dialect/Shape/IR Shape.cpp, mlir/test/Dialect/Shape canonicalize.mlir

[mlir][shape] Fix crash in FromExtentsOp::fold with poison operands (#178844)

## Summary
- Fix assertion failure in `shape.from_extents` fold when operands
include `ub.poison`
- The fold assumed all non null attributes were `IntegerAttr`, but
poison produces a different attribute type
- Use `dyn_cast_if_present` to safely handle non integer attributes

Fixes #178820

## Test plan
- Added regression test `@from_extents_poison` in canonicalize.mlir
DeltaFile
+12-0mlir/test/Dialect/Shape/canonicalize.mlir
+6-4mlir/lib/Dialect/Shape/IR/Shape.cpp
+18-42 files

LLVM/project 3425b82llvm/lib/CodeGen ExpandIRInsts.cpp, llvm/test/CodeGen/AMDGPU fptoi.i128.ll

[ExpandIRInst] Support expanding fptoi to smaller type (#178690)

In order to support expanding fptoi where the target type is smaller,
make most of the code work on the float-as-integer type, rather than the
target type of the cast. We only need to cast the final result to the
target type, or prior to performing a left shift.

This not only allows us to handle casts to a smaller type, but also
avoids performing intermediate calculations on unnecessarily large
types.

This also matches how compiler-rt handles this:
https://github.com/llvm/llvm-project/blob/main/compiler-rt/lib/builtins/fp_fixint_impl.inc

Proof: https://alive2.llvm.org/ce/z/3pJ9pE

(Note that there is a pre-existing issue that we produce the same code
for fptosi and fptoui.)
DeltaFile
+678-852llvm/test/CodeGen/AMDGPU/fptoi.i128.ll
+84-72llvm/test/Transforms/ExpandIRInsts/X86/expand-large-fp-convert-fptosi129.ll
+84-72llvm/test/Transforms/ExpandIRInsts/X86/expand-large-fp-convert-fptoui129.ll
+116-24llvm/test/Transforms/ExpandIRInsts/X86/expand-fp-convert-small.ll
+24-20llvm/lib/CodeGen/ExpandIRInsts.cpp
+986-1,0405 files