LLVM/project 09fb32e — offload/libompaccsupport device.cpp, openmp/docs/design Runtimes.md

rename env var
DeltaFile
+8-8openmp/docs/design/Runtimes.md
+3-3offload/libompaccsupport/device.cpp
+11-112 files

LLVM/project a7429f3 — llvm/include/llvm/Transforms/IPO Attributor.h, llvm/lib/Transforms/IPO Attributor.cpp

Attributor: Add only new attributes when manifesting (#234241)

manifestAttrs collected the attributes to add in an AttrBuilder, then
copied the position's attribute set into another AttrBuilder to merge
them in. Collect them in an array and merge them into the set in one
pass. This requires the attributes passed to manifestAttrs to be sorted
like an attribute set, which all callers already do. The only one
passing more than one attribute is AMDGPUAttributor, whose implicit
argument attributes are sorted.

Instructions spent in amdgpu-attributor:
  rocPRIM test_device_scan, gfx942:          770.2M -> 710.8M (-7.7%)
  Blender Cycles HIP kernel, gfx1100:        380.0M -> 379.5M (-0.1%)
  rocPRIM 16 tests, full LTO, closed world:  3019.8M -> 2855.9M (-5.4%)

Co-authored-by: Claude Opus 5.5 <noreply at anthropic.com>
DeltaFile
+58-43llvm/lib/Transforms/IPO/Attributor.cpp
+3-1llvm/include/llvm/Transforms/IPO/Attributor.h
+61-442 files

LLVM/project 7c176b3 — llvm/include/llvm/TableGen Record.h, llvm/lib/TableGen Record.cpp

TableGen: Index defs by direct superclass for getAllDerivedDefinitions

getAllDerivedDefinitions visited every def to find those derived from the
requested class. The results are cached per class, but adding a def
clears the cache, so each !instances during parsing scans again.
Generating the RISC-V DAG instruction selector scans all 260,000 defs 26
times.

Record each def under its direct superclasses when it is added, and have
a query test those superclasses instead of every def. A def with several
matching superclasses is found more than once, so remove the duplicates
after sorting.

RISCVGenDAGISel.inc tablegen run:

            Gigainstructions  Gigacycles      CPU seconds
  Before    61.4              33.8            10.5
  After     60.9 (-0.8%)      31.7 (-6.0%)    9.9 (-5.8%)


    [13 lines not shown]
DeltaFile
+20-9llvm/lib/TableGen/Record.cpp
+5-0llvm/include/llvm/TableGen/Record.h
+25-92 files

LLVM/project 4133249 — offload/include device.h, offload/libompaccsupport PluginManager.cpp device.cpp

[Offload][omp] Route data memory operations through liboffload (#233884)

Use olMemcpy for DeviceTy::submitData/retrieveData/dataExchange and
olMemFill for omp_target_memset. Use `nullptr` instead of finding a host
device for operations involving the host.

Remove the now unused data_submit, data_submit_async,
data_retrieve_async, data_exchange, data_exchange_async and
is_data_exchangable plugin entry points.

Assisted by Claude.
DeltaFile
+87-43offload/libompaccsupport/device.cpp
+0-65offload/plugins-nextgen/common/src/PluginInterface.cpp
+12-24offload/libomptarget/OpenMP/API.cpp
+30-4offload/include/device.h
+0-24offload/plugins-nextgen/common/include/PluginInterface.h
+4-4offload/libompaccsupport/PluginManager.cpp
+133-1646 files

LLVM/project 79ce869 — clang/www c_status.html

[clang][C2y] Add the WG14 papers adopted in Ottawa (#234935)

Continues to only list papers that impact the frontend, so excludes
purely editorial changes and library-only changes.
DeltaFile
+56-0clang/www/c_status.html
+56-01 files

LLVM/project d92db3c — flang/lib/Semantics openmp-utils.cpp expression.cpp, flang/test/Semantics substring-stride.f90

[flang][OpenMP] Validate substrings (#234661)

IsSubstring discarded expression-analysis diagnostics while leaving
symbols marked erroneous. Those erroneous symbols would cause an
assertion failure if visited again.

Retain those diagnostics and improve diagnostics with more useful errors
that distinguish correctly between substrings and arrays.

Assisted-by: Codex
DeltaFile
+64-0flang/test/Semantics/OpenMP/substring-invalid.f90
+53-0flang/test/Semantics/OpenMP/substring-bounds.f90
+45-3flang/lib/Semantics/check-omp-structure.cpp
+27-0flang/test/Semantics/substring-stride.f90
+18-0flang/lib/Semantics/expression.cpp
+13-3flang/lib/Semantics/openmp-utils.cpp
+220-62 files not shown
+226-78 files

LLVM/project ca5df42 — llvm/lib/Transforms/Utils InlineFunction.cpp, llvm/test/Transforms/Inline byval.ll

[Inliner] Use alloc size for byval copies (#234808)

Byval copies were sized with the store size, which is smaller than the
alloc size for types such as x86_fp80 and i24.

Fixes #234047
DeltaFile
+54-0llvm/test/Transforms/Inline/byval.ll
+1-1llvm/lib/Transforms/Utils/InlineFunction.cpp
+55-12 files

LLVM/project c354fd5 — llvm/lib/Target/AVR AVRExpandPseudoInsts.cpp, llvm/test/CodeGen/AVR std-ldd-tiny.ll

[AVR] Fix byte spills and stack args on AVRTiny

AVRTiny cores have no load/store with displacement, yet 8-bit spills,
reloads and stack arguments in functions without a reserved call frame
were still emitted as STDPtrQRr/LDDRdPtrQ. llc then aborted in the
AsmPrinter, so any function that spilled a byte failed to compile, also
with the default register allocator and at -O0, and builds without
assertions silently emitted std/ldd instead.

Expand both instructions on AVRTiny the same way as their 16-bit
counterparts: a plain st/ld when the displacement is zero, as it always
is for spill slots, and pointer adjustments around it otherwise.
DeltaFile
+222-0llvm/test/CodeGen/AVR/std-ldd-tiny.ll
+74-0llvm/lib/Target/AVR/AVRExpandPseudoInsts.cpp
+44-0llvm/test/CodeGen/AVR/pseudo/STDPtrQRr.mir
+41-0llvm/test/CodeGen/AVR/pseudo/LDDRdPtrQ.mir
+381-04 files

LLVM/project d0443ba — llvm/lib/Transforms/Vectorize VPlanRecipes.cpp, llvm/test/Transforms/LoopVectorize early_exit_combined_exits.ll early_exit_with_stores.ll

[VPlan] Use llvm.mask.beforefirst for computing early exit mask

This makes the cost more accurate and improves codegen for RISC-V. The codegen for an early exit loop with side effects then goes from:

    .LBB0_3:                                # %vector.body
                                            # =>This Inner Loop Header: Depth=1
        vl1r.v  v16, (a3)
        vsetvli zero, zero, e8, m1, ta, ma
        vmseq.vi        v16, v16, 0
        vfirst.m        a7, v16
        srli    t0, a7, 63
        czero.nez       a7, a7, t0
        czero.eqz       t0, a1, t0
        or      a7, t0, a7
        vsetvli zero, zero, e64, m8, ta, ma
        vmsltu.vx       v0, v8, a7
        vle8.v  v17, (a5), v0.t
        vcpop.m t1, v16
        vsetvli zero, zero, e8, m1, ta, ma

    [22 lines not shown]
DeltaFile
+50-50llvm/test/Transforms/LoopVectorize/AArch64/early_exit_with_stores.ll
+40-40llvm/test/Transforms/LoopVectorize/VPlan/early_exit_with_stores_vplan.ll
+18-18llvm/test/Transforms/LoopVectorize/early_exit_with_stores.ll
+21-0llvm/lib/Transforms/Vectorize/VPlanRecipes.cpp
+10-10llvm/test/Transforms/LoopVectorize/RISCV/early_exit_with_stores.ll
+8-8llvm/test/Transforms/LoopVectorize/early_exit_combined_exits.ll
+147-1267 files not shown
+166-14413 files

LLVM/project 8868051 — llvm/include/llvm/CodeGen BasicTTIImpl.h, llvm/test/Analysis/CostModel/AArch64 mask-beforefirst.ll

Handle scalarization
DeltaFile
+13-10llvm/test/Analysis/CostModel/AArch64/mask-beforefirst.ll
+6-0llvm/include/llvm/CodeGen/BasicTTIImpl.h
+19-102 files

LLVM/project c78bd3a — llvm/include/llvm/CodeGen BasicTTIImpl.h, llvm/test/Analysis/CostModel/AArch64 mask-beforefirst.ll

[TTI] Add cost for llvm.mask.beforefirst
DeltaFile
+16-16llvm/test/Analysis/CostModel/RISCV/mask-beforefirst.ll
+15-15llvm/test/Analysis/CostModel/AArch64/mask-beforefirst.ll
+23-0llvm/include/llvm/CodeGen/BasicTTIImpl.h
+54-313 files

LLVM/project 66b3fcf — llvm/test/Analysis/CostModel/AArch64 mask-beforefirst.ll, llvm/test/Analysis/CostModel/RISCV mask-beforefirst.ll

Precommit tests
DeltaFile
+44-0llvm/test/Analysis/CostModel/AArch64/mask-beforefirst.ll
+42-0llvm/test/Analysis/CostModel/RISCV/mask-beforefirst.ll
+86-02 files

LLVM/project d25e262 — llvm/lib/CodeGen/SelectionDAG TargetLowering.cpp, llvm/test/CodeGen/X86 mask-beforefirst.ll

[SelectionDAG] Handle splitting in get_active_lane_mask expansion

Split when the type is legal, e.g. v64i1, but the step vector needed for expansion needs split, e.g. v64i8.

This can happen on avx512 when the 512 bit registers are disabled.
DeltaFile
+350-0llvm/test/CodeGen/X86/mask-beforefirst.ll
+12-2llvm/lib/CodeGen/SelectionDAG/TargetLowering.cpp
+362-22 files

LLVM/project 3501545 — llvm/lib/Analysis ValueTracking.cpp, llvm/test/Transforms/InstCombine mask-beforefirst.ll

[ValueTracking] Mark mask.beforefirst as propagating poison (#234473)

This allows us to combine some logical ands/ors to regular ands/ors.
DeltaFile
+26-0llvm/test/Transforms/InstCombine/mask-beforefirst.ll
+1-0llvm/lib/Analysis/ValueTracking.cpp
+27-02 files

LLVM/project 0150faf — llvm/lib/CodeGen/SelectionDAG TargetLowering.cpp, llvm/test/CodeGen/WebAssembly mask-beforefirst.ll

[DAG] Fix get_active_lane_mask expansion on 32-bit targets (#234487)

On e.g. wasm32, OpVT can be 32 bits whilst the StepVector type can be
v2i64. When this happens DAG.getConstant asserts because maxUIntN
doesn't fit into the 32 bits. Fix this by clamping it to OpVT's max
size.
DeltaFile
+47-0llvm/test/CodeGen/WebAssembly/mask-beforefirst.ll
+4-2llvm/lib/CodeGen/SelectionDAG/TargetLowering.cpp
+51-22 files

LLVM/project f79c501 — llvm/test/CodeGen/AArch64 sve-pdep.ll sve-pext.ll

[AArch64] Extend pdep and pext tests. NFC (#234943)
DeltaFile
+442-546llvm/test/CodeGen/AArch64/pext.ll
+429-518llvm/test/CodeGen/AArch64/pdep.ll
+280-0llvm/test/CodeGen/AArch64/sve-pext.ll
+261-0llvm/test/CodeGen/AArch64/sve-pdep.ll
+1,412-1,0644 files

LLVM/project 33d37e2 — llvm/lib/Target/AArch64 SVEInstrFormats.td, llvm/test/MC/AArch64/FPv2 minmax.s

[AArch64][llvm] Add support for FEAT_FPv2 (#231436)

Add support for FEAT_FPv2 (IEEE 754-2019 floating-point standard
alignment) instructions.
DeltaFile
+514-0llvm/test/MC/AArch64/SVE2p3/minmax.s
+247-0llvm/test/MC/AArch64/FPv2/minmax.s
+102-0llvm/lib/Target/AArch64/SVEInstrFormats.td
+64-0llvm/test/MC/AArch64/SVE2p3/minmax-diagnostics.s
+64-0llvm/test/MC/AArch64/SVE2p3/fcmtl-diagnostics.s
+51-0llvm/test/MC/AArch64/SVE2p3/total-compare.s
+1,042-044 files not shown
+1,339-3750 files

LLVM/project a1b3ac6 — llvm/lib/Target/AArch64 SMEInstrFormats.td, llvm/test/MC/AArch64/SME2 fmopab-fmopat.s fp_dot.s

[AArch64][llvm] Add support for FEAT_SME_F16F8F16 (#231435)

Add support for FEAT_SME_F16F8F16 (SME half-precision and FP8
sum-of-products accumulating to half-precision instructions).
DeltaFile
+166-0llvm/test/MC/AArch64/SME2/fp_dot-diagnostics.s
+69-0llvm/test/MC/AArch64/SME2/fmopab-fmopat-diagnostics.s
+62-0llvm/test/MC/AArch64/SME2/fp_dot.s
+57-0llvm/lib/Target/AArch64/SMEInstrFormats.td
+38-0llvm/test/MC/AArch64/SME2/fmopab-fmopat.s
+22-3llvm/unittests/TargetParser/TargetParserTest.cpp
+414-39 files not shown
+467-315 files

LLVM/project b842673 — llvm/lib/Target/AArch64 AArch64Features.td, llvm/test/MC/AArch64/SVE matrix-multiply-fp64.s permute.s

[AArch64][llvm] Armv9.8-A: Add support for FEAT_SVE_PERM256 (#231433)

Add support for FEAT_SVE_PERM256 (SVE 128-bit element permute
instructions), which enables already existing instructions,
independently of FEAT_F64MM
DeltaFile
+66-0llvm/test/MC/AArch64/SVE/permute.s
+0-48llvm/test/MC/AArch64/SVE/matrix-multiply-fp64.s
+5-2llvm/lib/Target/AArch64/AArch64Features.td
+6-0llvm/test/MC/AArch64/SVE2/directive-arch_extension-negative.s
+4-1llvm/unittests/TargetParser/TargetParserTest.cpp
+5-0llvm/test/MC/AArch64/SVE2/directive-arch-negative.s
+86-518 files not shown
+108-5314 files

LLVM/project fbdefa7 — llvm/lib/Target/RISCV RISCVProcessors.td, llvm/test/CodeGen/RISCV spacemitx60-stack-reorder.ll stack-reorder.ll

[RISCV] Enable TunePreferAscendingLoadStore for spacemit-a100 (#234532)

Like spacemit-x60, a100 benefits from ascending LD/ST fusion.

Rename spacemitx60-stack-reorder.ll to stack-reorder.ll, add
spacemit-a100 and -mattr lines.
DeltaFile
+62-0llvm/test/CodeGen/RISCV/stack-reorder.ll
+0-58llvm/test/CodeGen/RISCV/spacemitx60-stack-reorder.ll
+2-1llvm/lib/Target/RISCV/RISCVProcessors.td
+64-593 files

LLVM/project 87cefb0 — clang/www c_dr_status.html

[clang][C] Update the C DR Status page (#234928)

WG14 has switched their issue processing system and so this now links to
the new issue logs instead of the historical ones, for improved
consistency. This also adds all of the issues filed against C23.

It does not add the issues filed against C2y because C2y is still in
progress and so those aren't really defect reports. However, we may want
to track them at some point to ensure we're conforming to their
resolutions.
DeltaFile
+1,572-467clang/www/c_dr_status.html
+1,572-4671 files

LLVM/project af3e869 — flang/lib/Semantics check-omp-variant.cpp, flang/test/Semantics/OpenMP metadirective-declare-reduction.f90 metadirective-declare-reduction-v51.f90

Address review comments
DeltaFile
+0-15flang/test/Semantics/OpenMP/metadirective-declare-reduction.f90
+15-0flang/test/Semantics/OpenMP/metadirective-declare-reduction-v51.f90
+15-0flang/test/Semantics/OpenMP/metadirective-declare-reduction-v52.f90
+1-1flang/lib/Semantics/check-omp-variant.cpp
+31-164 files

LLVM/project adfd81b — flang/lib/Parser Fortran-parsers.cpp, flang/test/Parser missing-colons.f90 recovery11.f90

[flang] Fix diagnostic order for invalid coarray dimension declarations (#219282)

Summary: Drop spurious "expected entity declarations" after missing '::'

#215886 made `withMessage()` anchor its message at the parser's start
location when no tokens matched. The nonstandard "`,` in place of `::`"
fallback for type declaration statements wraps its `,` in
`withMessage()`,
so when no `,` followed the attribute list it reported "expected entity
declarations" at the same location as the standard "expected '::'". The
two
messages tied and came out in the wrong order:

```fortran
integer :: d
real, dimension (0:d)[0:d] :: ra
end
```


    [17 lines not shown]
DeltaFile
+34-0flang/test/Parser/recovery11.f90
+5-2flang/lib/Parser/Fortran-parsers.cpp
+7-0flang/test/Parser/missing-colons.f90
+1-1flang/test/Semantics/CUDA/cuda-managed-implicit-modfile.cuf
+47-34 files

LLVM/project 5918b55 — lldb/source/Plugins/ExpressionParser/Clang ClangASTMetadata.cpp, lldb/source/Plugins/SymbolFile/NativePDB PdbAstBuilderClang.h PdbAstBuilderClang.cpp

[LLDB][NativePDB] Set IsDynamicCXXType metadata for records (#155853)

All records were marked as not being a dynamic C++ type - even ones that
contain virtual methods. However, these _are_ dynamic C++ types.

With this PR, the metadata for dynamic C++ types is now set when a
record is completed and a type is considered dynamic if it has any
virtual method (e.g. destructor).

I'm not sure how to test this. I noticed this when implementing a
Microsoft ABI runtime to resolve types based on their vtables (PR TBD).
DeltaFile
+51-8lldb/source/Plugins/SymbolFile/NativePDB/PdbAstBuilderClang.cpp
+43-0lldb/test/Shell/SymbolFile/NativePDB/dynamic-types.cpp
+19-7lldb/source/Plugins/TypeSystem/Clang/TypeSystemClang.cpp
+5-5lldb/source/Plugins/ExpressionParser/Clang/ClangASTMetadata.cpp
+5-2lldb/source/Plugins/SymbolFile/NativePDB/PdbAstBuilderClang.h
+123-225 files

LLVM/project 9945545 — offload/include PluginManager.h, offload/libompaccsupport PluginManager.cpp

[Offload] Avoid invoking liboffload functions when uninitialized (#234645)

When libomptarget reads/detects `OMP_TARGET_OFFLOAD=disabled`, it skips
invoking `olInit()`, so subsequent calls to liboffload functions return
errors in most cases. This change adds minimal tracking of liboffload to
avoid such type of errors.

Assisted by Claude
DeltaFile
+25-0offload/test/offloading/offload_disabled.c
+16-3offload/libompaccsupport/PluginManager.cpp
+5-0offload/include/PluginManager.h
+1-1offload/test/offloading/disable_default_device.c
+1-1offload/libomptarget/interface.cpp
+48-55 files

LLVM/project b164df4 — clang/test/CIR/CodeGen new-delete-no-exceptions.cpp

[CIR] Update new-delete-no-exceptions.cpp for operator new memory effects
DeltaFile
+1-1clang/test/CIR/CodeGen/new-delete-no-exceptions.cpp
+1-11 files

LLVM/project cbf15ef — llvm/lib/Transforms/Vectorize VPlanRecipes.cpp, llvm/test/Transforms/LoopVectorize early_exit_combined_exits.ll early_exit_with_stores.ll

[VPlan] Use llvm.mask.beforefirst for computing early exit mask

This makes the cost more accurate and improves codegen for RISC-V. The codegen for an early exit loop with side effects then goes from:

    .LBB0_3:                                # %vector.body
                                            # =>This Inner Loop Header: Depth=1
        vl1r.v  v16, (a3)
        vsetvli zero, zero, e8, m1, ta, ma
        vmseq.vi        v16, v16, 0
        vfirst.m        a7, v16
        srli    t0, a7, 63
        czero.nez       a7, a7, t0
        czero.eqz       t0, a1, t0
        or      a7, t0, a7
        vsetvli zero, zero, e64, m8, ta, ma
        vmsltu.vx       v0, v8, a7
        vle8.v  v17, (a5), v0.t
        vcpop.m t1, v16
        vsetvli zero, zero, e8, m1, ta, ma

    [22 lines not shown]
DeltaFile
+50-50llvm/test/Transforms/LoopVectorize/AArch64/early_exit_with_stores.ll
+40-40llvm/test/Transforms/LoopVectorize/VPlan/early_exit_with_stores_vplan.ll
+18-18llvm/test/Transforms/LoopVectorize/early_exit_with_stores.ll
+21-0llvm/lib/Transforms/Vectorize/VPlanRecipes.cpp
+10-10llvm/test/Transforms/LoopVectorize/RISCV/early_exit_with_stores.ll
+8-8llvm/test/Transforms/LoopVectorize/early_exit_combined_exits.ll
+147-1267 files not shown
+166-14413 files

LLVM/project 9b661aa — llvm/include/llvm/CodeGen BasicTTIImpl.h, llvm/test/Analysis/CostModel/AArch64 mask-beforefirst.ll

Handle scalarization
DeltaFile
+13-10llvm/test/Analysis/CostModel/AArch64/mask-beforefirst.ll
+6-0llvm/include/llvm/CodeGen/BasicTTIImpl.h
+19-102 files

LLVM/project 1d77f86 — llvm/test/Analysis/CostModel/AArch64 mask-beforefirst.ll, llvm/test/Analysis/CostModel/RISCV mask-beforefirst.ll

Precommit tests
DeltaFile
+44-0llvm/test/Analysis/CostModel/AArch64/mask-beforefirst.ll
+42-0llvm/test/Analysis/CostModel/RISCV/mask-beforefirst.ll
+86-02 files

LLVM/project b3d2125 — llvm/include/llvm/CodeGen BasicTTIImpl.h, llvm/test/Analysis/CostModel/AArch64 mask-beforefirst.ll

[TTI] Add cost for llvm.mask.beforefirst
DeltaFile
+16-16llvm/test/Analysis/CostModel/RISCV/mask-beforefirst.ll
+15-15llvm/test/Analysis/CostModel/AArch64/mask-beforefirst.ll
+23-0llvm/include/llvm/CodeGen/BasicTTIImpl.h
+54-313 files