LLVM/project 8365c90clang/lib/CodeGen/TargetBuiltins RISCV.cpp, clang/lib/Headers riscv_packed_simd.h

[RISCV][P-ext] Support Packed Multiply High (#211223)
DeltaFile
+181-0llvm/test/CodeGen/RISCV/rvp-simd-64.ll
+120-0cross-project-tests/intrinsic-header-tests/riscv_packed_simd.c
+70-2llvm/lib/Target/RISCV/RISCVISelLowering.cpp
+55-0llvm/test/CodeGen/RISCV/rvp-simd-32.ll
+49-0clang/lib/CodeGen/TargetBuiltins/RISCV.cpp
+29-0clang/lib/Headers/riscv_packed_simd.h
+504-22 files not shown
+534-28 files

LLVM/project 3e9831aflang-rt/lib/runtime trampoline.cpp, flang/docs ProcedurePointer.md FAQ.md

[flang][docs] Update runtime trampoline documentation (#215233)

Follow-up documentation cleanup for the runtime trampoline pool added by
#183108 and the FAQ update in #207656.

This updates the documentation to match the current implementation,
including the default and `-fsafe-trampoline` paths, runtime pool
behavior, API naming, and `scratch` handling.
DeltaFile
+63-119flang/docs/InternalProcedureTrampolines.md
+5-14flang-rt/lib/runtime/trampoline.cpp
+8-9flang/include/flang/Runtime/trampoline.h
+5-4flang/docs/ProcedurePointer.md
+5-4flang/docs/FAQ.md
+5-4flang/docs/Calls.md
+91-1541 files not shown
+92-1557 files

LLVM/project ef88536clang/lib/AST/ByteCode Boolean.h

[clang][bytecode] Make Boolean::bitcastToMemory const (#215715)
DeltaFile
+3-1clang/lib/AST/ByteCode/Boolean.h
+3-11 files

LLVM/project b196601clang/lib/AST/ByteCode Interp.cpp

[clang][bytecode][NFC] Use hasBody() instead of getBody() (#215718)

We either don't use the body at all, or only use it to convert it to an
integer. Use `hasBody()` instead.
DeltaFile
+6-6clang/lib/AST/ByteCode/Interp.cpp
+6-61 files

LLVM/project 83ec9bdclang/lib/AST/ByteCode EvalEmitter.cpp

[clang][bytecode][NFC] Remove redundant setSource() call (#215716)

We already do that a few lines up.
DeltaFile
+0-1clang/lib/AST/ByteCode/EvalEmitter.cpp
+0-11 files

LLVM/project a7a24d0compiler-rt/lib/builtins comparedf2.cpp, libc/shared/builtins gedf2.h ledf2.h

[compiler-rt][builtins] libc-backed double-float comparison builtins
DeltaFile
+54-0compiler-rt/lib/builtins/comparedf2.cpp
+30-0libc/src/__support/builtins/unorddf2.h
+30-0libc/src/__support/builtins/gedf2.h
+30-0libc/src/__support/builtins/ledf2.h
+29-0libc/shared/builtins/gedf2.h
+29-0libc/shared/builtins/ledf2.h
+202-06 files not shown
+280-012 files

LLVM/project 3cf3c72mlir/include/mlir/Target/LLVMIR ModuleImport.h, mlir/lib/Target/LLVMIR ModuleImport.cpp

[MLIR][LLVM] Preserve global value metadata operands on import (#203017)

Import metadata operands that refer to an `llvm::GlobalValue` as
`#llvm.md_global_value` attributes. Resolve each reference to the MLIR
symbol assigned during module import, retaining synthesized names for
nameless globals.

Report unsupported metadata when an operand has no symbol-backed
representation in the imported module. This covers local values,
intrinsics with dedicated import conversions, and `llvm.global_ctors` or
`llvm.global_dtors`.
DeltaFile
+95-5mlir/test/Target/LLVMIR/Import/intrinsic-unregistered.ll
+41-21mlir/lib/Target/LLVMIR/ModuleImport.cpp
+58-0mlir/test/Target/LLVMIR/Import/import-failure.ll
+12-0mlir/include/mlir/Target/LLVMIR/ModuleImport.h
+206-264 files

LLVM/project 049d0f7clang/lib/AST/ByteCode EvalEmitter.h Source.h

[clang][bytecode] Clean up SourceMapper related code (#215528)

Instead of having different `SourceMapper` implementations, just ask the
`Function` directly if we have one, and fall back to the `SourceMapper`
otherwise.

We now only have one `SourceMapper` implementation though:
`EvalEmitter`. And the only reason we have this is so we don't have a
circular dependency between `InterpState` and `EvalEmitter`.
DeltaFile
+21-9clang/lib/AST/ByteCode/InterpFrame.cpp
+6-14clang/lib/AST/ByteCode/Source.cpp
+6-7clang/lib/AST/ByteCode/InterpState.h
+5-5clang/lib/AST/ByteCode/Source.h
+3-5clang/lib/AST/ByteCode/EvalEmitter.h
+41-405 files

LLVM/project c6f5c21clang/lib/AST/ByteCode InterpBuiltin.cpp

[clang][bytecode][NFC] Avoid an APFloat copy (#215543)
DeltaFile
+1-1clang/lib/AST/ByteCode/InterpBuiltin.cpp
+1-11 files

LLVM/project f4f66aeclang/lib/AST/ByteCode Program.h Compiler.cpp

[clang][bytecode][NFC] Fix some copies in for-range loops (#215544)
DeltaFile
+1-1clang/lib/AST/ByteCode/Program.h
+1-1clang/lib/AST/ByteCode/Compiler.cpp
+1-1clang/lib/AST/ByteCode/ByteCodeEmitter.cpp
+3-33 files

LLVM/project c79546fllvm/include/llvm/IR DebugInfoMetadata.h, llvm/lib/CodeGen/AsmPrinter DwarfExpression.cpp

[DebugInfo][NFC] Add typed DIExpression operand views (#215682)

DIExpression users check an opcode and then read its arguments with
numbered getArg() calls. Add typed views for the operations with
repeated raw accesses and use their named accessors in those consumers.

The views reuse ExprOperand's pointer storage and LLVM's cast helpers. A
failed dyn_cast returns an empty view, so conditional matches don't need
an optional wrapper. Reading one is a bug, so getOp() and getArg() now
assert the operand is there rather than dereferencing null.

The only interesting change is that getActiveBits loses the fallthrough
from its extract case into its fragment case. The two shared one read
because both opcodes keep their size in the same argument; now each
names its own through its view and they share a lambda for
the narrowing. A unit test covers both paths.

Overall a bit more code, but quite a bit more readable IMO.


    [2 lines not shown]
DeltaFile
+183-3llvm/include/llvm/IR/DebugInfoMetadata.h
+166-0llvm/unittests/IR/MetadataTest.cpp
+85-43llvm/lib/IR/DebugInfoMetadata.cpp
+51-47llvm/lib/CodeGen/AsmPrinter/DwarfExpression.cpp
+8-8llvm/lib/IR/DIExpressionOptimizer.cpp
+8-6llvm/lib/Transforms/Scalar/LoopStrengthReduce.cpp
+501-1074 files not shown
+518-12410 files

LLVM/project ec8d363clang/lib/AST/ByteCode Interp.cpp

[clang][bytecode][NFC] Remove redundant isInvalidDecl() check (#215546)

This is already checked earlier in the same function.
DeltaFile
+0-4clang/lib/AST/ByteCode/Interp.cpp
+0-41 files

LLVM/project ff0f1ecclang/include/clang/InstallAPI FileList.h

[clang][InstallAPI] Fix doc comment weirdness (#215462)

We shouldn't be using a documentation comment here.
DeltaFile
+3-3clang/include/clang/InstallAPI/FileList.h
+3-31 files

LLVM/project dad45fdmlir/include/mlir/Dialect/Utils ReshapeOpsUtils.h

[mlir][NFC] Remove internal linkage from reshape op helper templates (#214759)

Another case of the cleanup done for #208001, which enabled
-Wunused-template under -Wall. Both helpers are `static` in
ReshapeOpsUtils.h, which reaches many TUs via Linalg.h, Tensor.h and
MemRef.h, so clang warns wherever they are not instantiated. Dropping
`static` gives them vague linkage.
DeltaFile
+4-4mlir/include/mlir/Dialect/Utils/ReshapeOpsUtils.h
+4-41 files

LLVM/project f30ed76llvm/lib/Target/WebAssembly WebAssemblyISelLowering.cpp, llvm/test/CodeGen/WebAssembly simd-extending-convert.ll

[WebAssembly][DAGCombine] Avoid scalarizing v8i8 to v8f16 conversions (#213636)

WebAssembly FP16 can convert `v8i16` to `v8f16`, but direct `v8i8` to
`v8f16` conversions were scalarized during SelectionDAG type
legalization.

This results in lane extractions, scalar conversions, calls to
`__truncsfhf2`, and reconstruction of the result vector.

We should extend `v8i8` to `v8i16` in `performVectorExtendToFPCombine`
before type legalization. This allows the existing WebAssembly combines
to select:

- `i16x8.extend_low_i8x16_{s,u}`
- `f16x8.convert_i16x8_s`
DeltaFile
+25-0llvm/test/CodeGen/WebAssembly/simd-extending-convert.ll
+6-4llvm/lib/Target/WebAssembly/WebAssemblyISelLowering.cpp
+31-42 files

LLVM/project 247fe34mlir/include/mlir/Bytecode BytecodeImplementation.h, mlir/include/mlir/IR AffineMap.h OpDefinition.h

[mlir][NFC] Remove internal linkage from core header function templates (#214756)

These are more of the cases fixed alongside #208001, which enabled
-Wunused-template under -Wall. Each template is `static` in a widely
included header, so clang warns in every TU that includes it without
instantiating it. Dropping `static` gives them vague linkage and
silences the warning.
DeltaFile
+8-11mlir/include/mlir/IR/PDLPatternMatch.h.inc
+6-7mlir/include/mlir/IR/OpDefinition.h
+3-3mlir/include/mlir/Pass/PassOptions.h
+2-2mlir/include/mlir/IR/AffineMap.h
+2-2mlir/include/mlir/Bytecode/BytecodeImplementation.h
+21-255 files

LLVM/project cbaa3eallvm/test/CodeGen/NVPTX cmpxchg-sm90.ll f32x2-instructions.ll

[NVPTX] Cleanup PTX ISA subtarget features (#214623)
DeltaFile
+1,514-802llvm/test/CodeGen/NVPTX/reduction-intrinsics.ll
+654-654llvm/test/CodeGen/NVPTX/tcgen05-st.ll
+573-573llvm/test/CodeGen/NVPTX/atomicrmw-sm90.ll
+493-301llvm/test/CodeGen/NVPTX/i32x2-instructions.ll
+354-298llvm/test/CodeGen/NVPTX/f32x2-instructions.ll
+276-276llvm/test/CodeGen/NVPTX/cmpxchg-sm90.ll
+3,864-2,90489 files not shown
+8,229-7,04695 files

LLVM/project d3283c2bolt/lib/Profile DataAggregator.cpp

[Perf2bolt] Support multi-PID filtering for multiple perf inputs (#215541)

#199324 added support for multiple perf inputs in perf2bolt. Building on
that, this patch additionally supports filtering by multiple PIDs via
--pid=pid1,pid2...
DeltaFile
+25-16bolt/lib/Profile/DataAggregator.cpp
+25-161 files

LLVM/project f36f23bllvm/lib/CodeGen TypePromotion.cpp, llvm/test/CodeGen/RISCV pr148084.ll

[TypePromotion][RISCV][ARM] Ignore the condition operand of selects. (#215685)

We don't need to promote the condition operand in order to promote a
select. It must always be an i1 type so it doesn't matter where it comes
from.

The change to pr148084.ll is a regression, but I don't think it's
directly related to select. TypePromotion is using a zero extend
promotion which makes constants that are harder to materialize and
prevents the use of `not`. This kind of thing can happen independent of
selects being involved.
DeltaFile
+29-29llvm/test/Transforms/TypePromotion/ARM/casts.ll
+17-10llvm/test/CodeGen/RISCV/pr148084.ll
+7-0llvm/lib/CodeGen/TypePromotion.cpp
+53-393 files

LLVM/project af2d67allvm/lib/Target/RISCV RISCVPassRegistry.def RISCV.h

[RISCV] Port Gather/Scatter Lowering to NewPM (#215669)

This change also adds some missing pass dependencies to the legacy
version of the pass, to reflect some analyses that are already being
used.

Assisted-by: AI
DeltaFile
+72-45llvm/lib/Target/RISCV/RISCVGatherScatterLowering.cpp
+40-0llvm/lib/Target/RISCV/RISCVGatherScatterLowering.h
+0-3llvm/lib/Target/RISCV/RISCV.h
+2-1llvm/lib/Target/RISCV/RISCVTargetMachine.cpp
+2-1llvm/lib/Target/RISCV/RISCVCodeGenPassBuilder.cpp
+2-0llvm/lib/Target/RISCV/RISCVPassRegistry.def
+118-505 files not shown
+124-5011 files

LLVM/project d434ffeclang/lib/CIR/CodeGen CIRGenModule.cpp, clang/test/CIR/CodeGen lambda-generic-in-cxx11abi-lambda.cpp

[CIR] Fix a linking problem with a abi_tag deduced lambda (#215702)

This showed up in self build, but only happens when there is a lambda
with a deduced return type inside another lambda, that returns a type
with an abi_tag on it (std::string in this case). The problem was that
we weren't pulling our mangled name out of the cache, and instead were
re-calculating it every time. This takes code effectively-exactly from
classic-codegen an d puts it into CIRGenModule.cpp

Note the teest is a little fragile for the reproducer, so it needs to be
its own file. Also, there are some parts that are not necessary in it to
reproduce (the 'i' in particular) because this avoids us having 'padded'
lambdas, which results in a call-conv NYI. I considered disabling that,
but it is more work to go back and un-do that flag later, than to just
deal with an extra 'i' for the near future.
DeltaFile
+49-0clang/test/CIR/CodeGen/lambda-generic-in-cxx11abi-lambda.cpp
+10-0clang/lib/CIR/CodeGen/CIRGenModule.cpp
+59-02 files

LLVM/project cd93a11clang/test/CodeGen/RISCV/rvv-intrinsics-autogenerated/zvabd/non-policy/non-overloaded vwabdau.c, clang/test/CodeGen/RISCV/rvv-intrinsics-autogenerated/zvabd/non-policy/overloaded vwabdau.c

[Clang][RISCV] Fix vwabda[u] operand order (#215494)

See https://github.com/riscv-non-isa/riscv-rvv-intrinsic-doc/pull/435.
DeltaFile
+195-195clang/test/CodeGen/RISCV/rvv-intrinsics-autogenerated/zvabd/policy/overloaded/vwabda.c
+195-195clang/test/CodeGen/RISCV/rvv-intrinsics-autogenerated/zvabd/policy/non-overloaded/vwabda.c
+187-187clang/test/CodeGen/RISCV/rvv-intrinsics-autogenerated/zvabd/policy/overloaded/vwabdau.c
+187-187clang/test/CodeGen/RISCV/rvv-intrinsics-autogenerated/zvabd/policy/non-overloaded/vwabdau.c
+102-102clang/test/CodeGen/RISCV/rvv-intrinsics-autogenerated/zvabd/non-policy/overloaded/vwabdau.c
+102-102clang/test/CodeGen/RISCV/rvv-intrinsics-autogenerated/zvabd/non-policy/non-overloaded/vwabdau.c
+968-9682 files not shown
+1,166-1,1668 files

LLVM/project b1353f7llvm/lib/Target/AMDGPU SILoadStoreOptimizer.cpp, llvm/test/CodeGen/AMDGPU merge-tbuffer-gfx9.mir merge-tbuffer-gfx12.mir

[AMDGPU] Gate TBUFFER merging on relaxed OOB mode (#212695)

SILoadStoreOptimizer can combine adjacent TBUFFER accesses into a wider
typed buffer instruction. This changes the granularity of hardware OOB
handling and may affect neighboring components when an access is
partially
out of bounds.

Only allow TBUFFER load/store merging when
`amdgpu.tbuffer.oob.mode` is set to relaxed. Keep the accesses separate
when
the flag is absent, any, or strict to preserve strict OOB semantics.

Reference: https://github.com/llvm/llvm-project/pull/160922
DeltaFile
+189-257llvm/test/CodeGen/AMDGPU/merge-tbuffer-gfx11.mir
+127-175llvm/test/CodeGen/AMDGPU/merge-tbuffer-gfx9.mir
+127-175llvm/test/CodeGen/AMDGPU/merge-tbuffer-gfx12.mir
+127-175llvm/test/CodeGen/AMDGPU/merge-tbuffer-gfx10.mir
+6-0llvm/lib/Target/AMDGPU/SILoadStoreOptimizer.cpp
+576-7825 files

LLVM/project 59af1beclang/lib/Driver/ToolChains Flang.cpp, flang/test/Driver fast-math.f90

[Flang][Driver] Override -ffast-math floating point contraction with -ffp-contract= (#213574)

This patch allows overriding the floating point contract settings
implied by -ffast-math by explicitly specifying -ffp-contract=. The
final floating point contract mode follows the usual last-flag-wins
behavior. In addition, -fno-fast-math only cancels the effects of
-ffast-math and preserves any explicitly specified -ffp-contract=
setting.

A warning is emitted when an explicit -ffp-contract= option overrides
the floating point contract mode implied by -ffast-math.

This behavior is consistent with Clang.
DeltaFile
+51-10flang/test/Driver/fast-math.f90
+39-20clang/lib/Driver/ToolChains/Flang.cpp
+90-302 files

LLVM/project 14bc149llvm/lib/Target/AMDGPU SIInstrInfo.cpp SIFoldOperands.cpp, llvm/test/CodeGen/AMDGPU llvm.amdgcn.exp.bf16.ll llvm.amdgcn.cos.bf16.ll

[AMDGPU] VOP1 bf16 instructions read high 16 bit of an inline (#215688)

VOP1 cannot be used in this case and VOP3 shall use OPSEL.
DeltaFile
+18-2llvm/lib/Target/AMDGPU/SIInstrInfo.cpp
+20-0llvm/lib/Target/AMDGPU/SIFoldOperands.cpp
+8-8llvm/test/CodeGen/AMDGPU/llvm.amdgcn.tanh.ll
+4-4llvm/test/CodeGen/AMDGPU/llvm.amdgcn.rsq.bf16.ll
+2-2llvm/test/CodeGen/AMDGPU/llvm.amdgcn.exp.bf16.ll
+2-2llvm/test/CodeGen/AMDGPU/llvm.amdgcn.cos.bf16.ll
+54-184 files not shown
+62-2610 files

LLVM/project a167a0flibcxx/test/benchmarks/containers/associative map.bench.cpp unordered_map.bench.cpp, libcxx/test/benchmarks/format formatter_float.bench.cpp write_int_comparison.bench.cpp

[libc++] Fix duplicate names in benchmarks (#215676)

A few benchmarks were using names that were reused elsewhere in the test
suite. All benchmarks must have a unique name, otherwise we can't
distinguish them in LNT.
DeltaFile
+17-11libcxx/test/benchmarks/format/write_int_comparison.bench.cpp
+17-11libcxx/test/benchmarks/format/write_double_comparison.bench.cpp
+4-1libcxx/test/benchmarks/format/formatter_float.bench.cpp
+2-1libcxx/test/benchmarks/containers/associative/unordered_map.bench.cpp
+1-1libcxx/test/benchmarks/containers/associative/map.bench.cpp
+41-255 files

LLVM/project 563a0bdllvm/utils/lit/lit reports.py

lit/reports.py: Make Py3.8-compatible (for #211066) (#215554)

I know py3.8 is slightly old. That said;

- llvm/CMakeLists.txt restricts the bottom version as 3.8
- This is not a functionally-critical change

I won't object further discussions if version upgrade would be required.
DeltaFile
+2-1llvm/utils/lit/lit/reports.py
+2-11 files

LLVM/project 07ef24ellvm/lib/Target/AMDGPU VOP1Instructions.td, llvm/test/MC/AMDGPU gfx1250_asm_vop3_from_vop1-fake16.s

[AMDGPU] Allow OPSEL in bf16 trans instructions in fake16 (#215687)
DeltaFile
+24-0llvm/test/MC/AMDGPU/gfx1250_asm_vop3_from_vop1-fake16.s
+8-8llvm/test/MC/Disassembler/AMDGPU/gfx1250_dasm_vop3_from_vop1_dpp8.txt
+8-8llvm/test/MC/Disassembler/AMDGPU/gfx1250_dasm_vop3_from_vop1_dpp16.txt
+8-8llvm/test/MC/Disassembler/AMDGPU/gfx1250_dasm_vop3_from_vop1.txt
+2-0llvm/lib/Target/AMDGPU/VOP1Instructions.td
+50-245 files

LLVM/project 70d9aa4clang/lib/CIR/CodeGen CIRGenCall.cpp CIRGenModule.cpp, clang/test/CIR/CodeGen asm-label-redirect.c alloc-size.c

[CIR] Record target-cpu and target-features on function declarations (#214986)

A function declaration carried no CPU or feature attributes. CIRGen set
them from `setNonAliasAttributes`, which runs only for a definition,
where classic CodeGen sets them from `ConstructAttributeList` for a
declaration too. We now set them properly in `constructAttributeList`
alongside the other non-call-site attributes.

Recording them on a declaration exposes a second bug. When a function is
declared first and defined later with a `target` attribute,
`setNonAliasAttributes` wrote the definition's values over the
declaration's rather than replacing them, so a `tune-cpu` that the
`target` attribute suppresses survived. It now clears the three
attributes before writing, which is safe because
`getCPUAndFeaturesAttributes` resolves the most recent declaration, so
its result supersedes anything an earlier one wrote.

Assisted-by: Cursor / claude-opus-5
DeltaFile
+29-0clang/test/CIR/CodeGen/attr-target-x86.c
+15-6clang/lib/CIR/CodeGen/CIRGenModule.cpp
+8-1clang/lib/CIR/CodeGen/CIRGenCall.cpp
+2-2clang/test/CIR/CodeGen/asm-label-redirect.c
+2-2clang/test/CIR/CodeGen/alloc-size.c
+3-1clang/test/CIR/CodeGen/global-init.cpp
+59-121 files not shown
+62-127 files

LLVM/project b4864c4llvm/unittests/IR ConstantFPRangeTest.cpp

ConstantFPRangeTest.cpp: Hide templates conditionally. [-Wunused-template] (#215559)

Introduced in #86483. They are referred in `EXPENSIVE_CHECKS`.
DeltaFile
+4-0llvm/unittests/IR/ConstantFPRangeTest.cpp
+4-01 files