LLVM/project 66d78d0llvm/lib/Target/PowerPC PPCISelLowering.cpp, llvm/test/CodeGen/PowerPC bit_floor.ll

[PowerPC] fix Inefficient std::bit_floor(x)  (#183361)

Fix  Inefficient asm of std::bit_floor(x) for powerpc.
DeltaFile
+77-0llvm/lib/Target/PowerPC/PPCISelLowering.cpp
+17-27llvm/test/CodeGen/PowerPC/bit_floor.ll
+94-272 files

LLVM/project 92d04f1clang/lib/CIR/Dialect/Transforms LoweringPrepare.cpp

fix fmt
DeltaFile
+0-2clang/lib/CIR/Dialect/Transforms/LoweringPrepare.cpp
+0-21 files

LLVM/project 56ce7edllvm/lib/Target/AArch64 AArch64RegisterInfo.cpp

[AArch64] Fix strict weak ordering violation in regalloc hints sort. (#192055)

This fixes an error with expensive checks after landing #190139.

The issue was:

Error: comparison doesn't meet irreflexive requirements, assert(!(a <
a)).

because it could have previously returned 'true' in the ordering
function if registers A and B were equal.

Also made NFC change to rename 'HandleMatchCmpPredicateHint' ->
'HandleDestructivePredicateHint' (that was missed in the review).
DeltaFile
+4-4llvm/lib/Target/AArch64/AArch64RegisterInfo.cpp
+4-41 files

LLVM/project 03f6faallvm/test/Analysis/CostModel/AArch64 masked_ldst_vls.ll

[NFC][AArch64][TTI] Autogenerate masked_ldst_vls check lines (#192048)

Precommit before changing the cost model.
DeltaFile
+52-29llvm/test/Analysis/CostModel/AArch64/masked_ldst_vls.ll
+52-291 files

LLVM/project 16f7938lldb/source/Target StackFrameList.cpp, lldb/test/API/functionalities/scripted_frame_provider TestScriptedFrameProvider.py

[lldb] Fix synthetic frame identity loss during incremental fetches (#191903)

When `SyntheticStackFrameList::FetchFramesUpTo` is called incrementally,
PC-less synthetic frames can end up with identical `StackID` values.
This happens because `num_synthetic_frames` is reset to zero on each
call, handing out duplicate call frame addresses. Since PC-less frames
all share `LLDB_INVALID_ADDRESS` as their PC, the `StackID` equality
check cannot distinguish them, and `ExecutionContextRef` resolves the
wrong frame.

The fix counts existing synthetic frames in `m_frames` before starting
the fetch loop so new frames receive unique call frame addresses.
DeltaFile
+27-1lldb/test/API/functionalities/scripted_frame_provider/TestScriptedFrameProvider.py
+11-1lldb/source/Target/StackFrameList.cpp
+38-22 files

LLVM/project 44926b3llvm/include/llvm/ObjectYAML DWARFYAML.h, llvm/lib/ObjectYAML DWARFEmitter.cpp DWARFYAML.cpp

[DWARFYAML] Add support for v5 debug_line entry formats (#191358)

This lets us specify the *format* of the directory and file name
entries, but not the entries themselves.
DeltaFile
+115-0llvm/test/tools/yaml2obj/ELF/DWARF/debug-line-v5.yaml
+29-0llvm/include/llvm/ObjectYAML/DWARFYAML.h
+16-5llvm/lib/ObjectYAML/DWARFEmitter.cpp
+17-1llvm/lib/ObjectYAML/DWARFYAML.cpp
+177-64 files

LLVM/project 7a7fb02llvm/lib/Target/AMDGPU AMDGPULowerModuleLDSPass.cpp AMDGPULowerExecSync.cpp, llvm/test/CodeGen/AMDGPU lower-module-lds-link-time-global-scope.ll lower-module-lds-link-time-classify.ll

[AMDGPU] Add object linking support for LDS and named barrier lowering in the middle end

This is the first patch in a series introducing object linking support for
AMDGPU.

This PR adds the -amdgpu-enable-object-linking flag to enable object linking in
the backend. It also updates the AMDGPULowerModuleLDSPass and
AMDGPULowerExecSync passes to support lowering LDS and named barrier globals
when object linking is enabled.
DeltaFile
+167-0llvm/lib/Target/AMDGPU/AMDGPULowerModuleLDSPass.cpp
+125-0llvm/test/CodeGen/AMDGPU/lower-module-lds-link-time-global-scope.ll
+73-0llvm/test/CodeGen/AMDGPU/lower-module-lds-link-time-classify.ll
+50-0llvm/test/CodeGen/AMDGPU/lower-module-lds-link-time-internal-multi-user.ll
+44-0llvm/lib/Target/AMDGPU/AMDGPULowerExecSync.cpp
+38-0llvm/test/CodeGen/AMDGPU/lower-module-lds-link-time-internal-func.ll
+497-03 files not shown
+540-09 files

LLVM/project 14ee892offload/test/offloading interop-print.c

[OFFLOAD] Fix interop-print test commands (#191969)

Using %libomptarget-run-generic will fail or run an incorrect binary if
the previous %libomptarget-compile becames ignored because there's no
such device. Switching to use %libomptarget-compile-and-run-* which
doesn't have this issue.

Fixes post-merge issue of #191901
DeltaFile
+2-4offload/test/offloading/interop-print.c
+2-41 files

LLVM/project 4c7c3eacompiler-rt/lib/scudo/standalone wrappers_c.cpp

[scudo] Do not define some entrypoints on Fuchsia (#191826)

These entrypoints were defined separately in wrappers_c_bionic.cpp
(which Fuchsia did not include in the build) before #190857 and,
therefore, were not exposed to Fuchsia's Scudo clients.

With #190857, they have been merged into the main wrappers_c.cpp file,
removing this separation.

This commit makes them conditionally-defined to not be building for
Fuchsia, to restore the pre-#190857 ABI.
DeltaFile
+2-0compiler-rt/lib/scudo/standalone/wrappers_c.cpp
+2-01 files

LLVM/project 91ebd4aclang/lib/Sema SemaTemplate.cpp, clang/test/AST ast-dump-template-decls-json.cpp ast-dump-decl-context-json.cpp

[clang] fix some places where used decls were not marked as referenced (#191848)

Fixes some entities not being marked as referenced despite being used in
source code.
Also ties diagnostic-of-use to such references, because I don't think
there is a reason to have one without the other, even though I can't
think of a diagnosable entity which was not already covered before.
DeltaFile
+272-267clang/test/AST/ast-dump-template-decls-json.cpp
+31-28clang/test/AST/ast-dump-decl-context-json.cpp
+12-12clang/test/AST/ast-dump-decl.cpp
+18-0clang/test/AST/ast-dump-templates.cpp
+14-3clang/lib/Sema/SemaTemplate.cpp
+4-4clang/test/AST/ast-dump-openmp-begin-declare-variant_namespace_1.cpp
+351-31422 files not shown
+388-35528 files

LLVM/project ae2e476clang/include/clang/APINotes Types.h, clang/include/clang/Basic OptionalUnsigned.h UnsignedOrNone.h

[clang] NFC: Refactor UnsignedOrNone into OptionalUnsigned<T> with enum support (#191828)

This kind optional is simpler to use when it needs to be represented in
a bitfield, because it has an `unsigned` integer representation which
avoids overflows. This applies to enums as well.

This also adds a single use of this new functionality, migrating users
of `std::optional<NullabilityKind>`
This optional used to be represented as two members in a bitfield, and
this simplifies things down to one.
DeltaFile
+81-0clang/include/clang/Basic/OptionalUnsigned.h
+0-53clang/include/clang/Basic/UnsignedOrNone.h
+18-32clang/include/clang/APINotes/Types.h
+3-5clang/lib/Sema/SemaExprObjC.cpp
+4-4clang/lib/APINotes/APINotesTypes.cpp
+3-4clang/lib/AST/Type.cpp
+109-989 files not shown
+123-10915 files

LLVM/project be1f794clang/lib/CIR/CodeGen CIRGenClass.cpp CIRGenFunction.h, clang/test/CIR/CodeGen inherited-ctors.cpp

[CIR] Inheriting Constructor/inheriting ctor inlining lowering (#191467)

In cases with inheritance/vertual tables/etc, we need to generate a
series of constructors to delegate to. There are a handful slightly
different cases where we need to generate these/generate calls to these,
so this patch does that lowering.

The test check-lines are a bit confusing thanks to the ordering
differences between declarations. However the LLVM/OGCG lines are copy
pasted (plus minor attribute differences), with the exception of the
call to a delegated constructor.

One thing of note here: There is a difference in behavior with the
delegated constructor, which is called out in the test in a comment.
Classic codegen has a bug where it correctly creates the declaration
without arguments (since this constructor is only for initializing the
vtable pointers, arguments aren't necessary). However, when
classic-codegen creates the call, it doesn't omit them.

This isn't a problem there, however in CIR, this causes us to fail the
verifier, so this fixes that in CIR, but leaves it alone in OGCG.
DeltaFile
+182-0clang/test/CIR/CodeGen/inherited-ctors.cpp
+128-6clang/lib/CIR/CodeGen/CIRGenClass.cpp
+71-0clang/lib/CIR/CodeGen/CIRGenFunction.h
+11-5clang/lib/CIR/CodeGen/CIRGenFunction.cpp
+13-3clang/lib/CIR/CodeGen/CIRGenCall.cpp
+5-2clang/lib/CIR/CodeGen/CIRGenExprAggregate.cpp
+410-161 files not shown
+416-167 files

LLVM/project d8c95e6libc/include ucontext.yaml, libc/include/llvm-libc-types CMakeLists.txt mcontext_t.h

[libc] Add ucontext types and headers (#191789)

Added mcontext_t and ucontext_t types for x86_64 Linux, and the
ucontext.h header definition. Used a dispatcher pattern for mcontext_t
and ucontext_t to support future architecture ports, mirroring the
pattern used in FPUtil.

Definitions are based on the Linux kernel ABI for x86_64.

Co-authored-by: Pavel Labath <pavel at labath.sk>
DeltaFile
+121-0libc/include/llvm-libc-types/x86_64/mcontext_t.h
+43-0libc/include/llvm-libc-types/x86_64/ucontext_t.h
+37-0libc/include/ucontext.yaml
+25-0libc/include/llvm-libc-types/CMakeLists.txt
+18-0libc/include/llvm-libc-types/mcontext_t.h
+18-0libc/include/llvm-libc-types/ucontext_t.h
+262-02 files not shown
+292-08 files

LLVM/project 224c429clang/docs ClangIRCleanupAndEHDesign.md ClangIRABILowering.md, clang/docs/CIR CleanupAndEHDesign.md ABILowering.md

[clang][CIR][doc] Add auto-generated ClangIR documentation (#190354)

ClangIR has a collection of documentation pages that we want to upstream
as part of the main clang documentation. These pages are originally
available at https://clangir.org/, maintained in the [incubator
repository](https://github.com/llvm/clangir) which has been archived a
few months ago.

This patch makes a first step towards the upstreaming of ClangIR
documentation. The pages included in this patch are those automatically
generated from MLIR TableGen. Specifically, this patch makes the
following changes to the main clang documentation tree:

- It adds a new subdirectory `CIR` under `clang/docs` to hold all
ClangIR documentation. There are already 3 ClangIR design documents put
under `clang/docs`, and this patch moves all of them to this new
subdirectory.
  - It touches the necessary CMake files and Python scripts to:
- Generate ClangIR language reference automatically from MLIR TableGen

    [2 lines not shown]
DeltaFile
+0-1,587clang/docs/ClangIRCleanupAndEHDesign.md
+1,587-0clang/docs/CIR/CleanupAndEHDesign.md
+556-0clang/docs/CIR/ABILowering.md
+0-556clang/docs/ClangIRABILowering.md
+138-138clang/include/clang/CIR/Dialect/IR/CIROps.td
+245-0clang/docs/CIR/CodeDuplication.rst
+2,526-2,28110 files not shown
+2,663-2,55116 files

LLVM/project 6cfbc25clang-tools-extra/clang-tidy/bugprone RedundantBranchConditionCheck.cpp, clang-tools-extra/clang-tidy/misc MisleadingBidirectionalCheck.cpp

[clang-tidy][NFC] Fix clang-format (#192044)
DeltaFile
+7-8clang-tools-extra/clang-tidy/bugprone/RedundantBranchConditionCheck.cpp
+4-2clang-tools-extra/clang-tidy/misc/MisleadingBidirectionalCheck.cpp
+11-102 files

LLVM/project 0d20c87clang/test/OpenMP irbuilder_nested_parallel_for.c nested_loop_codegen.cpp, flang/test/Integration/OpenMP workshare-ident-flag.f90

[OMPIRBuilder] Pass work loop type in ident flags (#189347)

Flang uses the OMPIRBuilder to lower OpenMP constructs to LLVM IR.
When dealing with work sharing constructs, such as DO, DISTRIBUTE or
SECTIONS/SECTION, OMPIRBuilder needs to construct the call to the OpenMP
runtime, typically `__kmpc_for_static_init` or
`__kmpc_dist_for_static_init`.

The first passed flag to these functions is the `ident_t` struct,
defined in `kmp.h`. Most of the arguments are reserved for usage in
Fortran and unused in `openmp`. However, the `flags` argument is used
throughout the code base to identify specific constructs, such as the
type of work sharing construct.

In https://github.com/llvm/llvm-project/issues/112545, it was identified
that Flang does not provide the correct `ident_t` flags when calling
into e.g. `__kmpc_for_static_init`, causing the following runtime
warning to appear when the OpenMP Tools Interface is used:


    [40 lines not shown]
DeltaFile
+977-977clang/test/OpenMP/irbuilder_nested_parallel_for.c
+391-391clang/test/OpenMP/nested_loop_codegen.cpp
+51-51clang/test/OpenMP/irbuilder_for_unsigned_static_chunked.c
+50-50clang/test/OpenMP/cancel_codegen.cpp
+73-0flang/test/Integration/OpenMP/workshare-ident-flag.f90
+39-7llvm/lib/Frontend/OpenMP/OMPIRBuilder.cpp
+1,581-1,47623 files not shown
+1,717-1,60929 files

LLVM/project 39bb86eclang/include/clang/Basic arm_sve.td, clang/test/Sema/aarch64-sme2p3-intrinsics acle_sme2p3_target_lane.c acle_sme2p3_target.c

fixup! Address more PR comments
DeltaFile
+15-9clang/test/Sema/aarch64-sve2p3-intrinsics/acle_sve2p3_target_lane.c
+0-16clang/test/Sema/aarch64-sme2p3-intrinsics/acle_sme2p3_target_lane.c
+5-5llvm/test/CodeGen/AArch64/sme2p3-intrinsics-luti6.ll
+3-3clang/test/Sema/aarch64-sme2p3-intrinsics/acle_sme2p3_target.c
+1-4llvm/lib/Target/AArch64/AArch64SVEInstrInfo.td
+4-0clang/include/clang/Basic/arm_sve.td
+28-371 files not shown
+28-387 files

LLVM/project 59b7415clang/test/CodeGen/RISCV/rvv-intrinsics-autogenerated/zvzip/policy/non-overloaded vpaire.c, clang/test/CodeGen/RISCV/rvv-intrinsics-autogenerated/zvzip/policy/overloaded vpairo.c vpaire.c

Merge branch 'main' into users/kparzysz/r04-affected-do-loops
DeltaFile
+4,582-5,914llvm/test/CodeGen/RISCV/rvv/vfma-vp.ll
+1,619-1,823llvm/test/CodeGen/RISCV/rvv/bitreverse-vp.ll
+1,390-1,556llvm/test/CodeGen/RISCV/rvv/fixed-vectors-bitreverse-vp.ll
+2,723-0clang/test/CodeGen/RISCV/rvv-intrinsics-autogenerated/zvzip/policy/overloaded/vpairo.c
+2,723-0clang/test/CodeGen/RISCV/rvv-intrinsics-autogenerated/zvzip/policy/overloaded/vpaire.c
+2,723-0clang/test/CodeGen/RISCV/rvv-intrinsics-autogenerated/zvzip/policy/non-overloaded/vpaire.c
+15,760-9,293650 files not shown
+75,272-25,229656 files

LLVM/project 356f2fcllvm/test/tools/UpdateTestChecks/update_mir_test_checks x86-filter.test, llvm/test/tools/UpdateTestChecks/update_mir_test_checks/Inputs x86-filter.mir.filter-out.expected x86-filter.mir.filter.expected

[UpdateTestChecks] Add --filter/--filter-out support to update_mir_test_checks.py (#191059)

These options were already accepted by the script but silently ignored.
This patch makes them functional, consistent with
update_llc_test_checks.py.

Co-Authored-By: Claude Sonnet 4.6 <noreply at anthropic.com>
DeltaFile
+67-0llvm/test/tools/UpdateTestChecks/update_mir_test_checks/Inputs/x86-filter.mir.filter-out.expected
+58-0llvm/test/tools/UpdateTestChecks/update_mir_test_checks/Inputs/x86-filter.mir.filter.expected
+55-0llvm/test/tools/UpdateTestChecks/update_mir_test_checks/Inputs/x86-filter.mir
+17-0llvm/test/tools/UpdateTestChecks/update_mir_test_checks/x86-filter.test
+3-2llvm/utils/UpdateTestChecks/mir.py
+1-0llvm/utils/update_mir_test_checks.py
+201-26 files

LLVM/project 78820cbclang/include/clang/Driver ToolChain.h, clang/lib/Driver ToolChain.cpp

[Clang] Enable multilib library support for Linux/Windows (#188584)

Summary:
This PR standardizes the logic used in the baremtal build to the common
toolchain interface. We then use this to handle the support in Linux and
Windows.

The multilib functionality allows us to select variant libraries based
off of a configuration file. For example, if the `multilib.yaml` file
detects `-fsanitize=address` it will automatically use the libraries
inside of `asan/` instead. These are layered so they do not necessarily
need to be complete library builds. More documentation can be found at
https://clang.llvm.org/docs/Multilib.html.

The motivation for this is so platforms like ROCm can use a more
standard way to ship debug / asan variants of libraries like OpenMP or
similar for both GPU an CPU targets.
DeltaFile
+107-0clang/lib/Driver/ToolChain.cpp
+5-96clang/lib/Driver/ToolChains/BareMetal.cpp
+78-0clang/test/Driver/mingw-multilib.yaml
+78-0clang/test/Driver/linux-multilib.yaml
+21-5clang/include/clang/Driver/ToolChain.h
+17-0clang/lib/Driver/ToolChains/MinGW.cpp
+306-1014 files not shown
+339-12210 files

LLVM/project f2b5dc2lldb/packages/Python/lldbsuite/test lldbtest.py, lldb/test/API/symstore TestSymStore.py

[lldb] Fix: Disable shared build dir when testing with PDB (#190991)

The mechanism to disable `SHARED_BUILD_TESTCASE` for tests
that set `TEST_WITH_PDB_DEBUG_INFO` doesn't work. The property 
was set on the wrong object. This patch fixes it and moves the assignment
after the for-loop, since the respective dict only exists there.
DeltaFile
+4-3lldb/packages/Python/lldbsuite/test/lldbtest.py
+0-1lldb/test/API/symstore/TestSymStore.py
+4-42 files

LLVM/project 9ea7508clang/test/Sema/aarch64-sve2p3-intrinsics acle_sve2p3_target_lane.c acle_sve2p3_imm.cpp, llvm/test/CodeGen/AArch64 sve2p3-intrinsics-luti6.ll

fixup! Add some more _bf16 tests
DeltaFile
+27-0clang/test/Sema/aarch64-sve2p3-intrinsics/acle_sve2p3_target_lane.c
+11-0llvm/test/CodeGen/AArch64/sve2p3-intrinsics-luti6.ll
+3-0clang/test/Sema/aarch64-sve2p3-intrinsics/acle_sve2p3_imm.cpp
+41-03 files

LLVM/project b2fb0e9clang/include/clang/Basic arm_sme.td arm_sve.td, clang/test/CodeGen/AArch64/sme2p3-intrinsics acle_sme2p3_luti6.c

fixup! Fix more PR comments
DeltaFile
+10-13llvm/include/llvm/IR/IntrinsicsAArch64.td
+4-4clang/test/CodeGen/AArch64/sme2p3-intrinsics/acle_sme2p3_luti6.c
+2-2clang/include/clang/Basic/arm_sme.td
+1-1clang/include/clang/Basic/arm_sve.td
+17-204 files

LLVM/project 9c6c74dclang/include/clang/Basic arm_sve.td arm_sme.td, clang/test/CodeGen/AArch64/sme2p3-intrinsics acle_sme2p3_luti6.c

fixup! Adjust `def`s and split out tests
DeltaFile
+0-158clang/test/CodeGen/AArch64/sve2p3-intrinsics/acle_sve2p3_luti6.c
+138-0clang/test/CodeGen/AArch64/sve2p3-intrinsics/acle_sve2p3_luti6_lane_x2.c
+5-5clang/test/CodeGen/AArch64/sme2p3-intrinsics/acle_sme2p3_luti6.c
+0-4clang/include/clang/Basic/arm_sve.td
+1-0clang/include/clang/Basic/arm_sme.td
+144-1675 files

LLVM/project 3e1dfdcclang/lib/Sema SemaARM.cpp, clang/test/Sema/aarch64-sve2p3-intrinsics acle_sve2p3_target_lane.c

fixup! More small PR fixes
DeltaFile
+0-44llvm/test/Verifier/AArch64/luti6-intrinsics.ll
+6-9llvm/lib/Target/AArch64/AArch64ISelDAGToDAG.cpp
+5-8llvm/test/CodeGen/AArch64/sve2p3-intrinsics-luti6.ll
+8-1clang/test/Sema/aarch64-sve2p3-intrinsics/acle_sve2p3_target_lane.c
+1-4llvm/test/CodeGen/AArch64/sme2p3-intrinsics-luti6.ll
+1-2clang/lib/Sema/SemaARM.cpp
+21-682 files not shown
+23-698 files

LLVM/project ffe55ffclang/include/clang/Basic arm_sve.td, clang/lib/Sema SemaARM.cpp

fixup! Address more PR comments
DeltaFile
+3-20clang/lib/Sema/SemaARM.cpp
+0-9clang/test/Sema/aarch64-sve2p3-intrinsics/acle_sve2p3_target_lane.c
+4-1clang/include/clang/Basic/arm_sve.td
+1-1clang/test/Sema/aarch64-sme2p3-intrinsics/acle_sme2p3_target_lane.c
+8-314 files

LLVM/project 7e039ccclang/lib/Basic/Targets AArch64.cpp, clang/test/Preprocessor aarch64-target-features.c

fixup! Address PR comments
DeltaFile
+18-12llvm/lib/Target/AArch64/SVEInstrFormats.td
+0-29clang/lib/Basic/Targets/AArch64.cpp
+0-23clang/test/Preprocessor/aarch64-target-features.c
+13-9llvm/lib/Target/AArch64/SMEInstrFormats.td
+1-6llvm/lib/Target/AArch64/AArch64SVEInstrInfo.td
+1-4llvm/lib/Target/AArch64/AArch64SMEInstrInfo.td
+33-831 files not shown
+33-857 files

LLVM/project 10e4c17clang/include/clang/Basic arm_sve.td, clang/test/CodeGen/AArch64/sve2p3-intrinsics acle_sve2p3_luti6.c

fixup! Fix final PR comments for now
DeltaFile
+118-8clang/test/CodeGen/AArch64/sve2p3-intrinsics/acle_sve2p3_luti6.c
+5-0llvm/lib/Target/AArch64/SVEInstrFormats.td
+1-1clang/include/clang/Basic/arm_sve.td
+1-0llvm/test/Verifier/AArch64/luti6-intrinsics.ll
+125-94 files

LLVM/project 3fb6456clang/lib/Sema SemaARM.cpp, clang/test/CodeGen/AArch64/sme2p3-intrinsics acle_sme2p3_luti6.c

fixup! Address more PR comments
DeltaFile
+21-3clang/lib/Sema/SemaARM.cpp
+12-4clang/test/CodeGen/AArch64/sme2p3-intrinsics/acle_sme2p3_luti6.c
+4-12llvm/include/llvm/IR/IntrinsicsAArch64.td
+6-6clang/test/CodeGen/AArch64/sve2p3-intrinsics/acle_sve2p3_luti6.c
+9-0clang/test/Sema/aarch64-sve2p3-intrinsics/acle_sve2p3_target_lane.c
+2-3llvm/lib/Target/AArch64/AArch64ISelDAGToDAG.cpp
+54-284 files not shown
+59-3410 files

LLVM/project e405fbfllvm/lib/Target/AArch64 AArch64ISelDAGToDAG.cpp

fixup! Add overloaded AArch64DAGToDAGISel::EmitMultiVectorLutiLane() for reuse
DeltaFile
+39-50llvm/lib/Target/AArch64/AArch64ISelDAGToDAG.cpp
+39-501 files