LLVM/project 4040e39llvm/lib/Target/RISCV RISCVInstrInfoV.td RISCVInstrFormats.td

[RISCV] Separate VMConstraint from RVVConstraint. NFC (#182089)

VMConstraint is true for most vector instructions by default. Almost
every time we set the Vs1/Vs2 bits we had to redundantly set the VM bit.

There were a few cases where the base class had already removed the
default VMConstraint with RVVConstraint=NoConstraint and an
instantiation had to make sure not to set it again when adding Vs1
and/or Vs2 constraints.

By separating them we can manage them more independently.

I will probably rename RVVConstraint in a followup.
DeltaFile
+27-26llvm/lib/Target/RISCV/RISCVInstrInfoV.td
+19-23llvm/lib/Target/RISCV/RISCVInstrFormats.td
+5-5llvm/lib/Target/RISCV/RISCVInstrInfoXRivos.td
+4-4llvm/lib/Target/RISCV/RISCVInstrInfoXAndes.td
+3-3llvm/lib/Target/RISCV/RISCVInstrInfoXSf.td
+3-3llvm/lib/Target/RISCV/RISCVInstrInfoZvk.td
+61-641 files not shown
+63-667 files

LLVM/project 19ebb0allvm/lib/Target/ARM ARMISelLowering.cpp ARMInstrNEON.td, llvm/test/CodeGen/ARM fp-intrinsics-vector-v8.ll

[ARM] Treat strictfp vector rounding operations as legal (#180480)

Previously, the strictfp variants of rounding operations (FLOOR, ROUND,
etc) were handled in SelectionDAG via the default expansion, which
splits vector operation into scalar ones. This results in less efficient
code.

This change declares the strictfp counterparts of the vector rounding
operations as legal and modifies existing rules in tablegen descriptions
accordingly.
DeltaFile
+6-96llvm/test/CodeGen/Thumb2/mve-strict-round.ll
+13-18llvm/lib/Target/ARM/ARMISelLowering.cpp
+5-25llvm/test/CodeGen/ARM/fp-intrinsics-vector-v8.ll
+6-6llvm/lib/Target/ARM/ARMInstrNEON.td
+6-6llvm/lib/Target/ARM/ARMInstrMVE.td
+36-1515 files

LLVM/project 19de2a4clang/test/CIR/IR global-var-linkage.cir, clang/test/CIR/Lowering global-var-linkage.cir

Add test for appending linkage
DeltaFile
+20-0clang/test/CIR/Lowering/global-var-linkage.cir
+2-0clang/test/CIR/IR/global-var-linkage.cir
+22-02 files

LLVM/project 5d94c60llvm/lib/Target/BPF BPFPreserveDIType.cpp, llvm/test/CodeGen/BPF/BTF builtin-btf-type-id-remote.ll

[BPF] Relax BTF_TYPE_ID_REMOTE_RELOC for unnamed types (#182370)

Currently, BTF_TYPE_ID_REMOTE_RELOC requires a named type e.g. named
struct or union types.

But in [1], there are some use cases where unnamed types, e.g., 'void
*', 'void **', 'const char *', etc. All these will fail compilation with
error:
  Empty type name for BTF_TYPE_ID_REMOTE reloc

This patch relaxed this condition to allow unnamed types. The kernel
libbpf will decide what are allowed or not for each specific cases.

[1]
https://lore.kernel.org/bpf/bb4bf5fe648ac71c969c6228ac6e72ea85cbc64b.camel@gmail.com/T/#m5a7abf799b75199f6678eddd9c1ea4e31563b4dc
DeltaFile
+129-0llvm/test/CodeGen/BPF/BTF/builtin-btf-type-id-remote.ll
+0-9llvm/lib/Target/BPF/BPFPreserveDIType.cpp
+129-92 files

LLVM/project aeb7580compiler-rt/lib/asan asan_interceptors.cpp, compiler-rt/test/asan/TestCases mmap_shadow_overlap.cpp munmap_shadow_partial.cpp

Make mmap-munmap interceptor fail earlier  (#171295)

If the address range is not covered by shadow memory, make interceptors
like mmap fail earlier.

---------

Signed-off-by: Abhishek Varma <abhvarma at amd.com>
Signed-off-by: Minsoo Choo <minsoochoo0122 at proton.me>
Signed-off-by: hanhanW <hanhan0912 at gmail.com>
Signed-off-by: Nikita B <n2h9z4 at gmail.com>
Signed-off-by: Nick Sarnie <nick.sarnie at intel.com>
Signed-off-by: Ian Wood <ianwood at u.northwestern.edu>
Co-authored-by: Min-Yih Hsu <min.hsu at sifive.com>
Co-authored-by: Sersawy <65075626+Abdelrhmansersawy at users.noreply.github.com>
Co-authored-by: Krzysztof Parzyszek <Krzysztof.Parzyszek at amd.com>
Co-authored-by: Walter Lee <49250218+googlewalt at users.noreply.github.com>
Co-authored-by: cpist (He / Him) <tinyfrog12 at gmail.com>
Co-authored-by: Jonathan Cohen <joncoh at apple.com>

    [139 lines not shown]
DeltaFile
+69-9compiler-rt/lib/asan/asan_interceptors.cpp
+62-0compiler-rt/test/asan/TestCases/mmap_shadow_overlap.cpp
+33-0compiler-rt/test/asan/TestCases/munmap_shadow_partial.cpp
+164-93 files

LLVM/project 5a4a1f4clang/test/SemaOpenCL function-scope-local-return.cl

[NFC][OpenCL] Fix test function-scope-local-return.cl (#182421)

Add `-triple spir64-unknown-unknown` to fix error on arm and aarch64:
unsupported OpenCL extension '__cl_clang_function_scope_local_variables'
DeltaFile
+1-1clang/test/SemaOpenCL/function-scope-local-return.cl
+1-11 files

LLVM/project e55b6c0llvm/lib/Transforms/Vectorize LoopVectorizationLegality.cpp, llvm/test/Transforms/LoopVectorize no-fold-tail-by-masking-iv-external-uses.ll tail-folding-iv-outside-user.ll

[LV] Allow tail folding with IVs with outside users (#182322)

#149042 added last-active-lane and removed the restriction that we
couldn't tail fold loops that had outside users (in AllowedExit).

However we still have a restriction that IVs can't have outside users.
This was added separately to the AllowedExit restriction in #81609, but
it looks like #149042 didn't remove it.

AFAICT we currently extract the correct lane for IVs, so this PR relaxes
the restriction. This helps a good few loops get tail folded in
llvm-test-suite.

-force-tail-folding-style=none was added to pr5881-scev-expansion.ll to
preserve the original scev expansion, since otherwise we end up with a
cttz.elts(false, false, true, true) that blocks SCEV analysis. We should
probably teach ConstantFolding to fold it.
DeltaFile
+56-25llvm/test/Transforms/LoopVectorize/no-fold-tail-by-masking-iv-external-uses.ll
+59-0llvm/test/Transforms/LoopVectorize/tail-folding-iv-outside-user.ll
+27-27llvm/test/Transforms/LoopVectorize/pr58811-scev-expansion.ll
+0-13llvm/lib/Transforms/Vectorize/LoopVectorizationLegality.cpp
+142-654 files

LLVM/project 0fa4a20lldb/source/Target ThreadList.cpp, lldb/test/API/functionalities/gdb_remote_client TestBatchedBreakpointStepOver.py

Merge branch 'main' into revert-181602-opencl-local-suppress-warn-return-stack-address
DeltaFile
+401-0llvm/test/Instrumentation/HWAddressSanitizer/use-after-scope.ll
+0-216lldb/test/API/functionalities/gdb_remote_client/TestBatchedBreakpointStepOver.py
+1-164lldb/source/Target/ThreadList.cpp
+0-151lldb/test/API/functionalities/thread/concurrent_events/TestConcurrentBatchedBreakpointStepOver.py
+60-0llvm/test/MC/AMDGPU/gfx1250_asm_vimage_err.s
+27-12llvm/lib/Transforms/Instrumentation/HWAddressSanitizer.cpp
+489-54314 files not shown
+565-65020 files

LLVM/project 9a18a29llvm/lib/CodeGen/SelectionDAG DAGCombiner.cpp LegalizeIntegerTypes.cpp, llvm/test/CodeGen/RISCV ctselect-fallback.ll

[ConstantTime] Changed CTSELECT instances to CT_SELECT
DeltaFile
+14-14llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp
+11-11llvm/test/CodeGen/X86/ctselect.ll
+9-9llvm/test/CodeGen/RISCV/ctselect-fallback.ll
+7-7llvm/lib/CodeGen/SelectionDAG/LegalizeIntegerTypes.cpp
+6-6llvm/lib/CodeGen/SelectionDAG/LegalizeVectorTypes.cpp
+6-6llvm/lib/CodeGen/SelectionDAG/LegalizeFloatTypes.cpp
+53-538 files not shown
+68-6814 files

LLVM/project 9569e57lldb/include/lldb/Target ThreadList.h ThreadPlanStepOverBreakpoint.h, lldb/source/Target ThreadList.cpp ThreadPlanStepOverBreakpoint.cpp

Revert "[lldb] Batch breakpoint step-over for threads stopped at the … (#182431)

DeltaFile
+0-216lldb/test/API/functionalities/gdb_remote_client/TestBatchedBreakpointStepOver.py
+1-164lldb/source/Target/ThreadList.cpp
+0-127lldb/test/API/functionalities/thread/concurrent_events/TestConcurrentBatchedBreakpointStepOver.py
+12-21lldb/source/Target/ThreadPlanStepOverBreakpoint.cpp
+0-23lldb/include/lldb/Target/ThreadList.h
+0-19lldb/include/lldb/Target/ThreadPlanStepOverBreakpoint.h
+13-5706 files

LLVM/project 43b3e78lldb/test/API/functionalities/thread/concurrent_events TestConcurrentBatchedBreakpointStepOver.py

reb

Created using spr 1.3.7
DeltaFile
+31-55lldb/test/API/functionalities/thread/concurrent_events/TestConcurrentBatchedBreakpointStepOver.py
+31-551 files

LLVM/project d69ededclang/unittests/Analysis/Scalable/Serialization JSONFormatTest.cpp, lldb/source/Plugins/Highlighter/TreeSitter/Rust/tree-sitter-rust grammar.js

Merge branch 'main' into users/spavloff/arm.round
DeltaFile
+8,874-0llvm/test/CodeGen/PowerPC/clmul-vector.ll
+4,143-746llvm/test/CodeGen/AMDGPU/amdgpu-simplify-libcall-pow.ll
+1,325-1,258llvm/lib/Transforms/Scalar/DeadStoreElimination.cpp
+991-1,493llvm/test/CodeGen/X86/broadcast-elm-cross-splat-vec.ll
+1,848-0clang/unittests/Analysis/Scalable/Serialization/JSONFormatTest.cpp
+1,690-0lldb/source/Plugins/Highlighter/TreeSitter/Rust/tree-sitter-rust/grammar.js
+18,871-3,4972,379 files not shown
+110,924-36,8242,385 files

LLVM/project 07f2486lldb/test/API/functionalities/thread/concurrent_events TestConcurrentBatchedBreakpointStepOver.py

[𝘀𝗽𝗿] changes introduced through rebase

Created using spr 1.3.7

[skip ci]
DeltaFile
+31-55lldb/test/API/functionalities/thread/concurrent_events/TestConcurrentBatchedBreakpointStepOver.py
+31-551 files

LLVM/project 2ef1759llvm/test/Instrumentation/HWAddressSanitizer use-after-scope.ll

[NFC] [HWASan] Add test for double lifetime



Reviewers: 

Pull Request: https://github.com/llvm/llvm-project/pull/182424
DeltaFile
+339-0llvm/test/Instrumentation/HWAddressSanitizer/use-after-scope.ll
+339-01 files

LLVM/project 80c0e50lldb/test/API/functionalities/thread/concurrent_events TestConcurrentBatchedBreakpointStepOver.py

[lldb] Fix batched breakpoint step-over test flakiness (#182415)

PR to fix failing test from
https://github.com/llvm/llvm-project/pull/180101 .

Fix the integration test to be resilient to non-deterministic thread
timing. Instead of requiring exact z0/Z0 counts, verify that batching
reduced toggles compared to one at a time stepping.

Also added: skip on `aarch64` where thread scheduling makes batching
unreliable.

Ran the test 20 times, passed all 20.

Co-authored-by: Bar Soloveychik <barsolo at fb.com>
DeltaFile
+31-55lldb/test/API/functionalities/thread/concurrent_events/TestConcurrentBatchedBreakpointStepOver.py
+31-551 files

LLVM/project 8110235llvm/test/CodeGen/Hexagon hvx-zext-split-check.ll, llvm/test/Instrumentation/HWAddressSanitizer use-after-scope.ll

upd

Created using spr 1.3.7
DeltaFile
+576-0llvm/test/tools/llvm-readobj/ELF/call-graph-info.test
+395-0llvm/test/tools/llvm-readobj/ELF/call-graph-info-warn-malformed.test
+321-0llvm/test/Instrumentation/HWAddressSanitizer/use-after-scope.ll
+267-0llvm/tools/llvm-readobj/ELFDumper.cpp
+241-0llvm/test/Transforms/InferAddressSpaces/NVPTX/int2ptr.ll
+224-0llvm/test/CodeGen/Hexagon/hvx-zext-split-check.ll
+2,024-048 files not shown
+2,536-18154 files

LLVM/project 90cdaf7llvm/lib/Transforms/Scalar InferAddressSpaces.cpp, llvm/test/CodeGen/Hexagon hvx-zext-split-check.ll

[𝘀𝗽𝗿] changes introduced through rebase

Created using spr 1.3.7

[skip ci]
DeltaFile
+576-0llvm/test/tools/llvm-readobj/ELF/call-graph-info.test
+395-0llvm/test/tools/llvm-readobj/ELF/call-graph-info-warn-malformed.test
+267-0llvm/tools/llvm-readobj/ELFDumper.cpp
+241-0llvm/test/Transforms/InferAddressSpaces/NVPTX/int2ptr.ll
+224-0llvm/test/CodeGen/Hexagon/hvx-zext-split-check.ll
+142-23llvm/lib/Transforms/Scalar/InferAddressSpaces.cpp
+1,845-2343 files not shown
+2,209-16849 files

LLVM/project 2225677llvm/lib/Transforms/Instrumentation HWAddressSanitizer.cpp, llvm/test/Instrumentation/HWAddressSanitizer use-after-scope.ll use-after-scope-setjmp.ll

[HWASan] tag on lifetime exit and return for non standard lifetime



Reviewers: vitalybuka, pcc

Reviewed By: pcc

Pull Request: https://github.com/llvm/llvm-project/pull/181438
DeltaFile
+62-0llvm/test/Instrumentation/HWAddressSanitizer/use-after-scope.ll
+27-12llvm/lib/Transforms/Instrumentation/HWAddressSanitizer.cpp
+19-7llvm/test/Instrumentation/HWAddressSanitizer/RISCV/use-after-scope-setjmp.ll
+18-6llvm/test/Instrumentation/HWAddressSanitizer/use-after-scope-setjmp.ll
+126-254 files

LLVM/project a4ec55allvm/lib/Transforms/Instrumentation HWAddressSanitizer.cpp, llvm/lib/Transforms/Utils MemoryTaggingSupport.cpp

[𝘀𝗽𝗿] initial version

Created using spr 1.3.7
DeltaFile
+394-31llvm/test/Instrumentation/HWAddressSanitizer/use-after-scope.ll
+40-34llvm/lib/Transforms/Utils/MemoryTaggingSupport.cpp
+27-12llvm/lib/Transforms/Instrumentation/HWAddressSanitizer.cpp
+19-7llvm/test/Instrumentation/HWAddressSanitizer/RISCV/use-after-scope-setjmp.ll
+18-6llvm/test/Instrumentation/HWAddressSanitizer/use-after-scope-setjmp.ll
+6-6llvm/test/CodeGen/AArch64/stack-tagging.ll
+504-961 files not shown
+510-977 files

LLVM/project 39e1187llvm/lib/Transforms/Instrumentation HWAddressSanitizer.cpp, llvm/test/Instrumentation/HWAddressSanitizer use-after-scope.ll use-after-scope-setjmp.ll

[𝘀𝗽𝗿] changes to main this commit is based on

Created using spr 1.3.7

[skip ci]
DeltaFile
+401-0llvm/test/Instrumentation/HWAddressSanitizer/use-after-scope.ll
+27-12llvm/lib/Transforms/Instrumentation/HWAddressSanitizer.cpp
+19-7llvm/test/Instrumentation/HWAddressSanitizer/RISCV/use-after-scope-setjmp.ll
+18-6llvm/test/Instrumentation/HWAddressSanitizer/use-after-scope-setjmp.ll
+465-254 files

LLVM/project 9f2a4b4llvm/lib/Transforms/Instrumentation HWAddressSanitizer.cpp, llvm/test/Instrumentation/HWAddressSanitizer use-after-scope.ll use-after-scope-setjmp.ll

[𝘀𝗽𝗿] changes to main this commit is based on

Created using spr 1.3.7

[skip ci]
DeltaFile
+62-0llvm/test/Instrumentation/HWAddressSanitizer/use-after-scope.ll
+27-12llvm/lib/Transforms/Instrumentation/HWAddressSanitizer.cpp
+19-7llvm/test/Instrumentation/HWAddressSanitizer/RISCV/use-after-scope-setjmp.ll
+18-6llvm/test/Instrumentation/HWAddressSanitizer/use-after-scope-setjmp.ll
+126-254 files

LLVM/project 9d61e89llvm/lib/Transforms/Instrumentation HWAddressSanitizer.cpp, llvm/test/Instrumentation/HWAddressSanitizer use-after-scope.ll use-after-scope-setjmp.ll

[𝘀𝗽𝗿] initial version

Created using spr 1.3.7
DeltaFile
+401-0llvm/test/Instrumentation/HWAddressSanitizer/use-after-scope.ll
+27-12llvm/lib/Transforms/Instrumentation/HWAddressSanitizer.cpp
+19-7llvm/test/Instrumentation/HWAddressSanitizer/RISCV/use-after-scope-setjmp.ll
+18-6llvm/test/Instrumentation/HWAddressSanitizer/use-after-scope-setjmp.ll
+465-254 files

LLVM/project a8932c8clang/unittests/Analysis/Scalable/Serialization JSONFormatTest.cpp, llvm/lib/Transforms/Scalar DeadStoreElimination.cpp

rebase

Created using spr 1.3.7
DeltaFile
+8,874-0llvm/test/CodeGen/PowerPC/clmul-vector.ll
+4,143-746llvm/test/CodeGen/AMDGPU/amdgpu-simplify-libcall-pow.ll
+1,325-1,258llvm/lib/Transforms/Scalar/DeadStoreElimination.cpp
+991-1,493llvm/test/CodeGen/X86/broadcast-elm-cross-splat-vec.ll
+1,848-0clang/unittests/Analysis/Scalable/Serialization/JSONFormatTest.cpp
+1,000-715llvm/test/Transforms/LoopVectorize/VPlan/vplan-sink-scalars-and-merge.ll
+18,181-4,2122,997 files not shown
+135,312-41,0533,003 files

LLVM/project 278a49bclang/unittests/Analysis/Scalable/Serialization JSONFormatTest.cpp, llvm/lib/Transforms/Scalar DeadStoreElimination.cpp

[𝘀𝗽𝗿] changes introduced through rebase

Created using spr 1.3.7

[skip ci]
DeltaFile
+8,874-0llvm/test/CodeGen/PowerPC/clmul-vector.ll
+4,143-746llvm/test/CodeGen/AMDGPU/amdgpu-simplify-libcall-pow.ll
+1,325-1,258llvm/lib/Transforms/Scalar/DeadStoreElimination.cpp
+991-1,493llvm/test/CodeGen/X86/broadcast-elm-cross-splat-vec.ll
+1,848-0clang/unittests/Analysis/Scalable/Serialization/JSONFormatTest.cpp
+1,000-715llvm/test/Transforms/LoopVectorize/VPlan/vplan-sink-scalars-and-merge.ll
+18,181-4,2122,997 files not shown
+135,312-41,0533,003 files

LLVM/project cfc3104llvm/test/MC/AMDGPU gfx1250_asm_vimage_err.s

[AMDGPU] Add negative tests for register aignment for tensor load/store, NFC (#182358)

DeltaFile
+60-0llvm/test/MC/AMDGPU/gfx1250_asm_vimage_err.s
+60-01 files

LLVM/project 54d5499lldb/include/lldb/Core PluginManager.h, lldb/source/Plugins/Highlighter/Default DefaultHighlighter.cpp

[lldb] Use C linkage for plugin initialization & termination (#182406)

Use C linkage for plugin initialization & termination. I'm working on
adding support for using the existing plugin infrastructure but with
dynamic libraries. Using C linkage makes it easier to dlsym the
initialize and terminate methods.

For example, with this patch,
`__ZN12lldb_private39lldb_initialize_ScriptInterpreterPythonEv` becomes
`_lldb_initialize_ScriptInterpreterPython`.
DeltaFile
+10-6lldb/include/lldb/Core/PluginManager.h
+2-10lldb/source/Plugins/SyntheticFrameProvider/ScriptedFrameProvider/ScriptedFrameProvider.cpp
+2-2lldb/source/Plugins/Highlighter/Default/DefaultHighlighter.cpp
+2-2lldb/source/Plugins/Highlighter/TreeSitter/Rust/RustTreeSitterHighlighter.cpp
+2-2lldb/source/Plugins/Process/scripted/ScriptedProcess.cpp
+2-2lldb/source/Plugins/Highlighter/TreeSitter/Swift/SwiftTreeSitterHighlighter.cpp
+20-241 files not shown
+22-267 files

LLVM/project df1137cclang-tools-extra/clang-tidy/modernize RedundantVoidArgCheck.cpp RedundantVoidArgCheck.h

[clang-tidy][NFC] Clean up traversal mode handling in `modernize-redundant-void-arg` (#182408)

#173340 added a bit of code to this check to work around #170953. Now
that the latter PR is merged, we can remove the workaround.
DeltaFile
+2-5clang-tools-extra/clang-tidy/modernize/RedundantVoidArgCheck.cpp
+3-0clang-tools-extra/clang-tidy/modernize/RedundantVoidArgCheck.h
+5-52 files

LLVM/project 75aac19clang/lib/Sema CheckExprLifetime.cpp, clang/test/SemaOpenCL function-scope-local-return.cl

Revert "[OpenCL] Suppress -Wreturn-stack-address for function-scope local var…"

This reverts commit ede47a3b13e4afcbe77db65d2165f42867c4b866.
DeltaFile
+0-13clang/test/SemaOpenCL/function-scope-local-return.cl
+0-3clang/lib/Sema/CheckExprLifetime.cpp
+0-162 files

LLVM/project ede47a3clang/lib/Sema CheckExprLifetime.cpp, clang/test/SemaOpenCL function-scope-local-return.cl

[OpenCL] Suppress -Wreturn-stack-address for function-scope local variable (#181602)

OpenCL local variable has lifetime of work-group, not function call stack.
DeltaFile
+13-0clang/test/SemaOpenCL/function-scope-local-return.cl
+3-0clang/lib/Sema/CheckExprLifetime.cpp
+16-02 files

LLVM/project 2e989bdllvm/include/llvm/Analysis TargetTransformInfo.h, llvm/lib/Analysis TargetTransformInfo.cpp

[InferAS] Infer the address space of inttoptr (#173244)

Currently the InferAddressSpaces would check if the bit value doesn't
change for <ptrtoint, inttoptr> address space cast. However the
condition is too strict. Sometime only the low bit address changes for
swizzling, and the address space is not changed. Take below code as
an example, we can transform `%gp2 = inttoptr i64 %b to ptr` to
`%gp2 = inttoptr i64 %b to ptr addrspace(2)` and specify addrspace(2)
for the following store instruction.
```
   %gp = addrspacecast ptr addrspace(2) %sp to ptr
   %a = ptrtoint ptr %gp to i64
   %b = xor i64 7, %a
   %gp2 = inttoptr i64 %b to ptr
   store i16 0, ptr %gp2, align 2
```
This patch tries to infer the unchanged leading bit for the address
and let the target determine if it is safe to perform address space
cast for inttoptr instruction.

    [3 lines not shown]
DeltaFile
+241-0llvm/test/Transforms/InferAddressSpaces/NVPTX/int2ptr.ll
+142-23llvm/lib/Transforms/Scalar/InferAddressSpaces.cpp
+15-0llvm/include/llvm/Analysis/TargetTransformInfo.h
+14-0llvm/lib/Target/NVPTX/NVPTXTargetTransformInfo.h
+4-2llvm/test/CodeGen/NVPTX/disjoint-or-addr.ll
+5-0llvm/lib/Analysis/TargetTransformInfo.cpp
+421-251 files not shown
+426-257 files