Page MenuHomePhabricator

bjope (Bjorn Pettersson)
User

Projects

User does not belong to any projects.

User Details

User Since
Sep 26 2016, 7:58 AM (338 w, 5 d)

Recent Activity

Fri, Mar 17

bjope added inline comments to D146206: [LAA] Fix transitive analysis invalidation bug by implementing LoopAccessInfoManager::invalidate.
Fri, Mar 17, 1:36 AM · Restricted Project, Restricted Project
bjope committed rG81d6310da1fc: [LAA] Fix transitive analysis invalidation bug by implementing… (authored by bjope).
[LAA] Fix transitive analysis invalidation bug by implementing…
Fri, Mar 17, 1:34 AM · Restricted Project, Restricted Project
bjope committed rG951a980dc7aa: [Analysis] Make order of analysis executions more stable (authored by bjope).
[Analysis] Make order of analysis executions more stable
Fri, Mar 17, 1:34 AM · Restricted Project, Restricted Project
bjope committed rGfed4e7d0d2a4: [test][MemDep] Correct the 'NOT' checks in the invalidation.ll test case. NFC (authored by bjope).
[test][MemDep] Correct the 'NOT' checks in the invalidation.ll test case. NFC
Fri, Mar 17, 1:34 AM · Restricted Project, Restricted Project
bjope closed D146206: [LAA] Fix transitive analysis invalidation bug by implementing LoopAccessInfoManager::invalidate.
Fri, Mar 17, 1:33 AM · Restricted Project, Restricted Project
bjope closed D146205: [test][MemDep] Correct the 'NOT' checks in the invalidation.ll test case. NFC.
Fri, Mar 17, 1:33 AM · Restricted Project, Restricted Project

Thu, Mar 16

bjope added inline comments to D146206: [LAA] Fix transitive analysis invalidation bug by implementing LoopAccessInfoManager::invalidate.
Thu, Mar 16, 11:18 AM · Restricted Project, Restricted Project
bjope added inline comments to D146206: [LAA] Fix transitive analysis invalidation bug by implementing LoopAccessInfoManager::invalidate.
Thu, Mar 16, 10:42 AM · Restricted Project, Restricted Project
bjope updated the diff for D146206: [LAA] Fix transitive analysis invalidation bug by implementing LoopAccessInfoManager::invalidate.
  1. Simplify return stmt in LoopAccessInfoManager::invalidate according to feedback.
  2. Use a separate RUN line in the test case to verify invalidata<access-info>.
  3. Reduce amount of CHECK:s in the test case. Don't think we need to verify what is going on with all other analyses. Better to make the CHECK:s focus on what is important for each sub-test.
Thu, Mar 16, 10:36 AM · Restricted Project, Restricted Project
bjope added inline comments to D146206: [LAA] Fix transitive analysis invalidation bug by implementing LoopAccessInfoManager::invalidate.
Thu, Mar 16, 6:16 AM · Restricted Project, Restricted Project
bjope requested review of D146206: [LAA] Fix transitive analysis invalidation bug by implementing LoopAccessInfoManager::invalidate.
Thu, Mar 16, 2:48 AM · Restricted Project, Restricted Project
bjope requested review of D146205: [test][MemDep] Correct the 'NOT' checks in the invalidation.ll test case. NFC.
Thu, Mar 16, 2:47 AM · Restricted Project, Restricted Project

Fri, Mar 10

bjope added a comment to D145704: Revert "Set FLT_EVAL_METHOD to -1 when fast-math is enabled.".

I have no objections about doing this revert.

Fri, Mar 10, 5:41 AM · Restricted Project, Restricted Project

Wed, Mar 8

bjope added a reviewer for D145556: [compiler-rt] Avoid signed shift overflow in __muloXi4 and __mulvXi3: MaskRay.
Wed, Mar 8, 3:17 AM · Restricted Project, Restricted Project

Mon, Mar 6

bjope added inline comments to D144927: [GVNHoist] don't hoist callbr users into the callbr's block.
Mon, Mar 6, 2:34 AM · Restricted Project, Restricted Project

Mon, Feb 27

bjope added inline comments to D144927: [GVNHoist] don't hoist callbr users into the callbr's block.
Mon, Feb 27, 4:24 PM · Restricted Project, Restricted Project

Feb 16 2023

bjope added a comment to D143754: [MachineInstr] Introduce generic predicated copy opcode.

In the description you have written "The copy operation with a predicated dependency is currently marked with an implicit operand". I don't really understand what that is referring to. Is that something AMDGPU specific, or what is this referring to?

Feb 16 2023, 12:14 PM · Restricted Project, Restricted Project
bjope added a comment to D143754: [MachineInstr] Introduce generic predicated copy opcode.

The IsPredicable field will always be turned to 1 for Pred_Copy to indicate that it is the Predicated version of the copy.

I actually wanted to have the Pred_Copy without these implicit operands. We should be able to model the dependency using an additional operand.
But I don't know how to model this operand and hence decided to continue using the implicit operand itself.

May be an immediate operand that takes const values (0, 1, 2, etc.)?
The immediate values can be mapped to enumerations defined via target files to represent these predicated dependencies.
When there is no dependency, use the value 0. It means, there is no dependency and can change to the regular COPY.
If required, the Pred_Copy with Imm_opnd value 0 can also be modeled for the "predicate is false" scenario.

For example. the following can be defined for AMDGPU target in llvm/lib/Target/AMDGPU/SIDefines.h

enum Copy_Predication {

None = 0,    // No dependency. It is for SGPR copies. At some point, convert the instruction into regular COPY.
Lane_Copy,  // copy only the active lanes of VGPRs.
Wave_Copy // copy all lanes of VGPRs

}

Any thoughts?

Feb 16 2023, 12:06 PM · Restricted Project, Restricted Project

Feb 15 2023

bjope added inline comments to D143754: [MachineInstr] Introduce generic predicated copy opcode.
Feb 15 2023, 1:27 PM · Restricted Project, Restricted Project

Feb 6 2023

bjope added a comment to D143388: [Lint] Use new PM instead of legacy PM in lintFunction and lintModule.

Had to revert this due to lots of buildbots failing when linking bugpoint.
Typically like this:

Feb 6 2023, 10:41 AM · Restricted Project, Restricted Project
bjope added a reverting change for rG525ed98be483: [Lint] Use new PM instead of legacy PM in lintFunction and lintModule: rGeec670ac8ebe: Revert "[Lint] Use new PM instead of legacy PM in lintFunction and lintModule".
Feb 6 2023, 10:30 AM · Restricted Project, Restricted Project
bjope committed rGeec670ac8ebe: Revert "[Lint] Use new PM instead of legacy PM in lintFunction and lintModule" (authored by bjope).
Revert "[Lint] Use new PM instead of legacy PM in lintFunction and lintModule"
Feb 6 2023, 10:30 AM · Restricted Project, Restricted Project
bjope added a reverting change for D143388: [Lint] Use new PM instead of legacy PM in lintFunction and lintModule: rGeec670ac8ebe: Revert "[Lint] Use new PM instead of legacy PM in lintFunction and lintModule".
Feb 6 2023, 10:30 AM · Restricted Project, Restricted Project
bjope committed rG525ed98be483: [Lint] Use new PM instead of legacy PM in lintFunction and lintModule (authored by bjope).
[Lint] Use new PM instead of legacy PM in lintFunction and lintModule
Feb 6 2023, 10:24 AM · Restricted Project, Restricted Project
bjope committed rGdf947febe2ee: [TailDuplicator] Fix old bugs in TailDuplicator::duplicateInstruction (authored by bjope).
[TailDuplicator] Fix old bugs in TailDuplicator::duplicateInstruction
Feb 6 2023, 10:23 AM · Restricted Project, Restricted Project
bjope committed rGc24b35b8f71b: [TailDuplicator] Pre-commit test case for a subreg composition bug (authored by bjope).
[TailDuplicator] Pre-commit test case for a subreg composition bug
Feb 6 2023, 10:23 AM · Restricted Project, Restricted Project
bjope closed D143388: [Lint] Use new PM instead of legacy PM in lintFunction and lintModule.
Feb 6 2023, 10:23 AM · Restricted Project, Restricted Project
bjope closed D140496: [TailDuplicator] Fix old bugs in TailDuplicator::duplicateInstruction.
Feb 6 2023, 10:23 AM · Restricted Project, Restricted Project
bjope closed D140495: [TailDuplicator] Pre-commit test case for a subreg composition bug.
Feb 6 2023, 10:23 AM · Restricted Project, Restricted Project
bjope added a comment to D143388: [Lint] Use new PM instead of legacy PM in lintFunction and lintModule.

can we delete the legacy pass?

Feb 6 2023, 10:20 AM · Restricted Project, Restricted Project
bjope added inline comments to D143388: [Lint] Use new PM instead of legacy PM in lintFunction and lintModule.
Feb 6 2023, 4:53 AM · Restricted Project, Restricted Project
bjope requested review of D143388: [Lint] Use new PM instead of legacy PM in lintFunction and lintModule.
Feb 6 2023, 4:44 AM · Restricted Project, Restricted Project
bjope committed rG2dd221fe482c: Remove no longer needed includes of LegacyPassManager.h (authored by bjope).
Remove no longer needed includes of LegacyPassManager.h
Feb 6 2023, 4:41 AM · Restricted Project, Restricted Project
bjope committed rG8323d2a66575: [CodeGen] Remove some not needed includes in BackendUtil.cpp (authored by bjope).
[CodeGen] Remove some not needed includes in BackendUtil.cpp
Feb 6 2023, 4:41 AM · Restricted Project, Restricted Project

Feb 5 2023

bjope updated the summary of D140496: [TailDuplicator] Fix old bugs in TailDuplicator::duplicateInstruction.
Feb 5 2023, 7:56 AM · Restricted Project, Restricted Project
bjope updated the diff for D140496: [TailDuplicator] Fix old bugs in TailDuplicator::duplicateInstruction.

Simplified code based on review feedback.

Feb 5 2023, 7:55 AM · Restricted Project, Restricted Project
bjope added inline comments to D140496: [TailDuplicator] Fix old bugs in TailDuplicator::duplicateInstruction.
Feb 5 2023, 7:53 AM · Restricted Project, Restricted Project

Jan 11 2023

bjope added a comment to D140496: [TailDuplicator] Fix old bugs in TailDuplicator::duplicateInstruction.

Gentle ping!

Jan 11 2023, 8:28 AM · Restricted Project, Restricted Project

Jan 3 2023

bjope added a comment to D118943: [DAGCombiner] Fix dependency analysis in checkMergeStoreCandidatesForDependencies.

@bjope This has been identified as the cause of a major compile time regression - https://github.com/llvm/llvm-project/issues/59800 - please can you take a look?

Jan 3 2023, 2:27 PM · Restricted Project, Restricted Project

Dec 22 2022

bjope resigned from D139993: [LoopFusion] Sorting of undominated FusionCandidates crashes.
Dec 22 2022, 12:56 AM · Restricted Project, Restricted Project

Dec 21 2022

bjope added inline comments to D140239: [llvm-stress] Add a mutation fuzzing mode.
Dec 21 2022, 3:28 PM · Restricted Project, Restricted Project
bjope updated subscribers of D140239: [llvm-stress] Add a mutation fuzzing mode.

I do not plan to give any review feedback at the moment. I've only touched this for legacy PM deprecation and I don't know much about the implementation details.

Dec 21 2022, 2:38 PM · Restricted Project, Restricted Project
bjope requested review of D140496: [TailDuplicator] Fix old bugs in TailDuplicator::duplicateInstruction.
Dec 21 2022, 1:23 PM · Restricted Project, Restricted Project
bjope requested review of D140495: [TailDuplicator] Pre-commit test case for a subreg composition bug.
Dec 21 2022, 1:19 PM · Restricted Project, Restricted Project

Dec 13 2022

bjope accepted D139899: [opt] Do not add verify pass at beginning of pipeline.

LGTM

Dec 13 2022, 2:12 AM · Restricted Project, Restricted Project

Dec 12 2022

bjope committed rG9c980f767cb9: [opt] Clean up code related to parsing legacy passes for new PM driver. NFC (authored by bjope).
[opt] Clean up code related to parsing legacy passes for new PM driver. NFC
Dec 12 2022, 8:48 AM · Restricted Project, Restricted Project

Dec 8 2022

bjope committed rG51ee10747d23: [test] Remove duplicate RUN lines (authored by bjope).
[test] Remove duplicate RUN lines
Dec 8 2022, 3:48 AM · Restricted Project, Restricted Project
bjope committed rG3528e63d8930: [test] Remove duplicate RUN lines in Transform tests (authored by bjope).
[test] Remove duplicate RUN lines in Transform tests
Dec 8 2022, 2:47 AM · Restricted Project, Restricted Project

Dec 7 2022

bjope added a comment to D138452: [ConstraintElim] Queue facts and checks directly..

Ok, here is a godbolt repro: https://llvm.godbolt.org/z/98PvGaTe9

The difference is that the branch in the entry block now looks like:

br i1 %0, label %trap, label %1

Thanks, interestingly this doesn't seem to crash on macOS, but I was able to reproduce on Linux. Should be fixed in 9eda78107c4d

Dec 7 2022, 3:53 AM · Restricted Project, Restricted Project

Dec 6 2022

bjope added a comment to D138452: [ConstraintElim] Queue facts and checks directly..

Ok, here is a godbolt repro: https://llvm.godbolt.org/z/98PvGaTe9

Dec 6 2022, 6:59 AM · Restricted Project, Restricted Project
bjope added a comment to D138452: [ConstraintElim] Queue facts and checks directly..

! In D138452#3974119, @fhahn wrote:

Thanks for the report. Is it possible this is over-reduced? I cannot reproduce it locally or on godbolt: https://llvm.godbolt.org/z/T8f1q33hq

Dec 6 2022, 6:54 AM · Restricted Project, Restricted Project

Dec 1 2022

bjope committed rGa11faeed4468: [test] Switch to use -passes syntax in various test cases (authored by bjope).
[test] Switch to use -passes syntax in various test cases
Dec 1 2022, 12:27 PM · Restricted Project, Restricted Project

Nov 29 2022

bjope committed rG0676acb6fd8d: [test] Switch to use -passes syntax in a bunch of test cases (authored by bjope).
[test] Switch to use -passes syntax in a bunch of test cases
Nov 29 2022, 4:30 AM · Restricted Project, Restricted Project

Nov 28 2022

bjope added a comment to D125845: [InstCombine] Canonicalize GEP of GEP by swapping constant-indexed GEP to the back.

Got a benchmark downstream were we no longer get SLP vectorization after the canonicalizatoin. But the test is rather large and complicated so I do not have anything that show the full pipeline including SLP (at least not yet).

Nov 28 2022, 5:18 PM · Restricted Project, Restricted Project
bjope added inline comments to D125845: [InstCombine] Canonicalize GEP of GEP by swapping constant-indexed GEP to the back.
Nov 28 2022, 10:17 AM · Restricted Project, Restricted Project
bjope committed rG2cb02f2385a0: [Mem2Reg] Switch tests to use opt -passes (authored by bjope).
[Mem2Reg] Switch tests to use opt -passes
Nov 28 2022, 3:16 AM · Restricted Project, Restricted Project
bjope committed rG076cda0aaae4: [clang][CodeGen] Switch tests to use opt -passes (authored by bjope).
[clang][CodeGen] Switch tests to use opt -passes
Nov 28 2022, 3:16 AM · Restricted Project, Restricted Project
bjope committed rG99c47d9e3113: Remove TargetMachine::adjustPassManager (authored by bjope).
Remove TargetMachine::adjustPassManager
Nov 28 2022, 1:27 AM · Restricted Project, Restricted Project
bjope closed D137796: Remove TargetMachine::adjustPassManager.
Nov 28 2022, 1:27 AM · Restricted Project, Restricted Project

Nov 20 2022

bjope committed rG1c308d664173: [LV] Clean up LoopVectorizationCostModel::calculateRegisterUsage. NFC (authored by bjope).
[LV] Clean up LoopVectorizationCostModel::calculateRegisterUsage. NFC
Nov 20 2022, 11:53 AM · Restricted Project, Restricted Project
bjope committed rG294fdd99039e: [TableGen] Fix SubRegIndex size computation for concatenated subregs of unknown… (authored by bjope).
[TableGen] Fix SubRegIndex size computation for concatenated subregs of unknown…
Nov 20 2022, 11:53 AM · Restricted Project, Restricted Project
bjope committed rGa6cb924abcd8: [TableGen] Let -register-info-debug dump Offset/Size for each SubRegIndex (authored by bjope).
[TableGen] Let -register-info-debug dump Offset/Size for each SubRegIndex
Nov 20 2022, 11:52 AM · Restricted Project, Restricted Project
bjope closed D138342: [LV] Clean up LoopVectorizationCostModel::calculateRegisterUsage. NFC.
Nov 20 2022, 11:52 AM · Restricted Project, Restricted Project
bjope closed D138341: [TableGen] Fix SubRegIndex size computation for concatenated subregs of unknown size.
Nov 20 2022, 11:52 AM · Restricted Project, Restricted Project
bjope closed D138340: [TableGen] Let -register-info-debug dump Offset/Size for each SubRegIndex.
Nov 20 2022, 11:52 AM · Restricted Project, Restricted Project

Nov 18 2022

bjope requested review of D138342: [LV] Clean up LoopVectorizationCostModel::calculateRegisterUsage. NFC.
Nov 18 2022, 4:44 PM · Restricted Project, Restricted Project
bjope requested review of D138341: [TableGen] Fix SubRegIndex size computation for concatenated subregs of unknown size.
Nov 18 2022, 4:19 PM · Restricted Project, Restricted Project
bjope requested review of D138340: [TableGen] Let -register-info-debug dump Offset/Size for each SubRegIndex.
Nov 18 2022, 4:18 PM · Restricted Project, Restricted Project

Nov 11 2022

bjope added a comment to D137796: Remove TargetMachine::adjustPassManager.

could I have a couple days until submitting this? we have one more internal usage of this

Nov 11 2022, 11:38 AM · Restricted Project, Restricted Project
bjope committed rG7a5332b9b558: [opt] Remove support for using -O[0|1|2|3|s|z] with legacy PM in opt (authored by bjope).
[opt] Remove support for using -O[0|1|2|3|s|z] with legacy PM in opt
Nov 11 2022, 12:18 AM · Restricted Project, Restricted Project
bjope closed D137663: [opt] Remove support for using -O[0|1|2|3|s|z] with legacy PM in opt.
Nov 11 2022, 12:18 AM · Restricted Project, Restricted Project

Nov 10 2022

bjope requested review of D137796: Remove TargetMachine::adjustPassManager.
Nov 10 2022, 12:12 PM · Restricted Project, Restricted Project
bjope updated the diff for D137663: [opt] Remove support for using -O[0|1|2|3|s|z] with legacy PM in opt.

Splitted out removal of adjustPassManager.

Nov 10 2022, 12:10 PM · Restricted Project, Restricted Project

Nov 9 2022

bjope committed rG893e351f2f62: [test] Avoid legacy PM default pipelines (O0,O1 etc) when running opt (authored by bjope).
[test] Avoid legacy PM default pipelines (O0,O1 etc) when running opt
Nov 9 2022, 12:58 AM · Restricted Project, Restricted Project
bjope closed D137626: [test] Avoid legacy PM default pipelines (O0,O1 etc) when running opt.
Nov 9 2022, 12:58 AM · Restricted Project, Restricted Project
bjope updated the diff for D137663: [opt] Remove support for using -O[0|1|2|3|s|z] with legacy PM in opt.

Added lit test.

Nov 9 2022, 12:19 AM · Restricted Project, Restricted Project

Nov 8 2022

bjope added inline comments to D137663: [opt] Remove support for using -O[0|1|2|3|s|z] with legacy PM in opt.
Nov 8 2022, 12:29 PM · Restricted Project, Restricted Project
bjope added a comment to D137626: [test] Avoid legacy PM default pipelines (O0,O1 etc) when running opt.

we should add a check in opt.cpp that we don't mix -O# with other passes (there's already a similar check for the new PM)

Nov 8 2022, 12:28 PM · Restricted Project, Restricted Project
bjope requested review of D137663: [opt] Remove support for using -O[0|1|2|3|s|z] with legacy PM in opt.
Nov 8 2022, 12:25 PM · Restricted Project, Restricted Project
bjope added a comment to D137626: [test] Avoid legacy PM default pipelines (O0,O1 etc) when running opt.

Just a side not here.

Nov 8 2022, 5:47 AM · Restricted Project, Restricted Project
bjope requested review of D137626: [test] Avoid legacy PM default pipelines (O0,O1 etc) when running opt.
Nov 8 2022, 3:19 AM · Restricted Project, Restricted Project
bjope committed rGac696ac4530f: Use opt -passes=<name> instead of opt -name (authored by bjope).
Use opt -passes=<name> instead of opt -name
Nov 8 2022, 3:18 AM · Restricted Project, Restricted Project
bjope committed rG5f9a82683dc1: [clang][test] Use opt -passes=<name> instead of opt -name (authored by bjope).
[clang][test] Use opt -passes=<name> instead of opt -name
Nov 8 2022, 3:18 AM · Restricted Project, Restricted Project

Nov 3 2022

bjope added inline comments to rG359bc5c541ae: [ConstraintElim] Bail out for GEPs when index size > 64 bits..
Nov 3 2022, 12:23 AM · Restricted Project, Restricted Project

Nov 2 2022

bjope committed rG44bb4099cd75: [ConstraintElimination] Do not crash on vector GEP in decomposeGEP (authored by bjope).
[ConstraintElimination] Do not crash on vector GEP in decomposeGEP
Nov 2 2022, 2:05 AM · Restricted Project, Restricted Project
bjope closed D137185: [ConstraintElimination] Do not crash on vector GEP in decomposeGEP.
Nov 2 2022, 2:05 AM · Restricted Project, Restricted Project

Nov 1 2022

bjope accepted D136616: [opt] Add -p alias for -passes.

(Only concern is that -p used to mean something else. So we are re-introducing a short-option for something new. But I doubt that it will cause much confusion.)

Nov 1 2022, 1:51 PM · Restricted Project, Restricted Project
bjope added a comment to D136617: [opt] Print deprecation warning for use of legacy syntax with new pass manager.

This currently depends on D136616 since it refer to the -p option. I think it looks good otherwise.

Nov 1 2022, 1:47 PM · Restricted Project, Restricted Project
bjope added a reviewer for D135653: [MemCpyOpt] Insert memset after memcpy in processMemSetMemCpyDependence: fhahn.

I guess we either want to do this (changing codegen to match the code comments). Or the other way around (changing code comments to match with codegen) as in D135574.

Nov 1 2022, 11:59 AM · Restricted Project, Restricted Project
bjope requested review of D137185: [ConstraintElimination] Do not crash on vector GEP in decomposeGEP.
Nov 1 2022, 11:57 AM · Restricted Project, Restricted Project
bjope added inline comments to rG359bc5c541ae: [ConstraintElim] Bail out for GEPs when index size > 64 bits..
Nov 1 2022, 11:12 AM · Restricted Project, Restricted Project
bjope added inline comments to rG359bc5c541ae: [ConstraintElim] Bail out for GEPs when index size > 64 bits..
Nov 1 2022, 10:31 AM · Restricted Project, Restricted Project
bjope added inline comments to rG359bc5c541ae: [ConstraintElim] Bail out for GEPs when index size > 64 bits..
Nov 1 2022, 10:27 AM · Restricted Project, Restricted Project

Oct 26 2022

bjope added inline comments to D136781: [LoopFuse] Ensure loops are in loop simplified form under new PM.
Oct 26 2022, 3:01 PM · Restricted Project, Restricted Project
bjope added a reviewer for D136781: [LoopFuse] Ensure loops are in loop simplified form under new PM: Whitney.
Oct 26 2022, 2:48 PM · Restricted Project, Restricted Project
bjope added inline comments to D136102: [LoopSimplify] Update loop-metadata ID after loop-simplify splitting out new outer loop.
Oct 26 2022, 3:27 AM · Restricted Project, Restricted Project
bjope added inline comments to D136102: [LoopSimplify] Update loop-metadata ID after loop-simplify splitting out new outer loop.
Oct 26 2022, 3:16 AM · Restricted Project, Restricted Project

Oct 25 2022

bjope added inline comments to D136617: [opt] Print deprecation warning for use of legacy syntax with new pass manager.
Oct 25 2022, 12:26 AM · Restricted Project, Restricted Project

Oct 24 2022

bjope added inline comments to D136102: [LoopSimplify] Update loop-metadata ID after loop-simplify splitting out new outer loop.
Oct 24 2022, 2:25 AM · Restricted Project, Restricted Project

Oct 21 2022

bjope committed rGec9ccb1668f6: [test] Use -passes syntax in Analysis tests (authored by bjope).
[test] Use -passes syntax in Analysis tests
Oct 21 2022, 11:55 AM · Restricted Project, Restricted Project