{"payload":{"feedbackUrl":"https://github.com/orgs/community/discussions/53140","repo":{"id":214085449,"defaultBranch":"rvv-iscas","name":"llvm-project","ownerLogin":"plctlab","currentUserCanPush":false,"isFork":false,"isEmpty":false,"createdAt":"2019-10-10T04:20:29.000Z","ownerAvatar":"https://avatars.githubusercontent.com/u/74488655?v=4","public":true,"private":false,"isOrgOwned":true},"refInfo":{"name":"","listCacheKey":"v0:1704178482.0","currentOid":""},"activityList":{"items":[{"before":"3ff1963f5cd51b370c30931109a80a84585fa178","after":"669a5a3065af405587c97bc27d76c166633a6954","ref":"refs/heads/auto-vector-upstream-next","pushedAt":"2024-05-17T08:46:39.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"ChunyuLiao","name":"Liao Chunyu","path":"/ChunyuLiao","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/26795311?s=80&v=4"},"commit":{"message":"[VP] Update uses of select instructions used as masks. (#68)\n\n* [VP] Update uses of select instructions used as masks.\r\n\r\n* [VP] Update test cases.","shortMessageHtmlLink":"[VP] Update uses of select instructions used as masks. (#68)"}},{"before":"e009baaf57f63a72e5710c62e085d7b1c4f9a0b8","after":"3ff1963f5cd51b370c30931109a80a84585fa178","ref":"refs/heads/auto-vector-upstream-next","pushedAt":"2024-04-01T00:42:52.000Z","pushType":"pr_merge","commitsCount":3,"pusher":{"login":"ChunyuLiao","name":"Liao Chunyu","path":"/ChunyuLiao","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/26795311?s=80&v=4"},"commit":{"message":"Merge pull request #66 from AinsleySnow/vp-select\n\n[VP][DAGCombiner] Use `simplifySelect` when combining vp.select.","shortMessageHtmlLink":"Merge pull request #66 from AinsleySnow/vp-select"}},{"before":"2c203bb5df8ae3923acf92bb56391be036bcf3d9","after":"e009baaf57f63a72e5710c62e085d7b1c4f9a0b8","ref":"refs/heads/auto-vector-upstream-next","pushedAt":"2024-03-11T01:38:37.000Z","pushType":"pr_merge","commitsCount":5,"pusher":{"login":"ChunyuLiao","name":"Liao Chunyu","path":"/ChunyuLiao","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/26795311?s=80&v=4"},"commit":{"message":"Merge pull request #65 from AinsleySnow/migrate\n\n[VP][LV] Migrate vector predication pass and intrinsics from llvm-bpevl.","shortMessageHtmlLink":"Merge pull request #65 from AinsleySnow/migrate"}},{"before":"9e1ad3cff6a855fdfdc1d91323e2021726da04ea","after":"2c203bb5df8ae3923acf92bb56391be036bcf3d9","ref":"refs/heads/auto-vector-upstream-next","pushedAt":"2024-01-03T13:59:10.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"ChunyuLiao","name":"Liao Chunyu","path":"/ChunyuLiao","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/26795311?s=80&v=4"},"commit":{"message":"[LV, VP]VP intrinsics support for the Loop Vectorizer\n\nThis patch introduces generating VP intrinsics in the Loop Vectorizer.\n\nCurrently the Loop Vectorizer supports vector predication in a very limited capacity via tail-folding and masked load/store/gather/scatter intrinsics. However, this does not let architectures with active vector length predication support take advantage of their capabilities. Architectures with general masked predication support also can only take advantage of predication on memory operations. By having a way for the Loop Vectorizer to generate Vector Predication intrinsics, which (will) provide a target-independent way to model predicated vector instructions, These architectures can make better use of their predication capabilities.\n\nOur first approach (implemented in this patch) builds on top of the existing tail-folding mechanism in the LV, but instead of generating masked intrinsics for memory operations it generates VP intrinsics for loads/stores instructions.\n\nOther important part of this approach is how the Explicit Vector Length is computed. (We use active vector length and explicit vector length interchangeably; VP intrinsics define this vector length parameter as Explicit Vector Length (EVL)). We consider the following three ways to compute the EVL parameter for the VP Intrinsics.\n\n- The simplest way is to use the VF as EVL and rely solely on the mask parameter to control predication. The mask parameter is the same as computed for current tail-folding implementation.\n- The second way is to insert instructions to compute `min(VF, trip_count - index)` for each vector iteration.\n- For architectures like RISC-V, which have special instruction to compute/set an explicit vector length, we also introduce an experimental intrinsic `get_vector_length`, that can be lowered to architecture specific instruction(s) to compute EVL.\n\nAlso, added a new recipe to emit instructions for computing EVL. Using VPlan in this way will eventually help build and compare VPlans corresponding to different strategies and alternatives.\n\n===Tentative Development Roadmap===\n\n* Use vp-intrinsics for all possible vector operations. That work has 2 possible implementations:\n 1. Introduce a new pass which transforms emitted vector instructions to vp intrinsics if the the loop was transformed to use predication for loads/stores. The advantage of this approach is that it does not require many changes in the loop vectorizer itself. The disadvantage is that it may require to copy some existing functionality from the loop vectorizer in a separate patch, have similar code in the different passes and perform the same analysis 2 times, at least.\n 2. Extend Loop Vectorizer using VectorBuildor and make it emit vp intrinsics automatically in presence of EVL value. The advantage is that it does not require a separate pass, thus it may reduce compile time. Plus, we can avoid code duplication. It requires some extra work in the LoopVectorizer to add VectorBuilder support and smart vector instructions/vp intrinsics emission. Also, to fully support Loop Vectorizer it will require adding a new PHI recipe to handle EVL on the previous iteration + extending several existing recipes with the new operands (depends on the design).\n* Switch to vp-intrinsics for memory operations for VLS and VLA vectorizations.\n\nDifferential Revision: https://reviews.llvm.org/D99750","shortMessageHtmlLink":"[LV, VP]VP intrinsics support for the Loop Vectorizer"}},{"before":null,"after":"9e1ad3cff6a855fdfdc1d91323e2021726da04ea","ref":"refs/heads/auto-vector-upstream-next","pushedAt":"2024-01-02T06:54:42.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"ChunyuLiao","name":"Liao Chunyu","path":"/ChunyuLiao","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/26795311?s=80&v=4"},"commit":{"message":"[RISCV] Remove blank lines at the end of testcases. NFC.","shortMessageHtmlLink":"[RISCV] Remove blank lines at the end of testcases. NFC."}},{"before":"d2bc4fa3c70ad9dd1723b2e75c9059c5db2052cf","after":"5ac5c0e7d1007745456329dbcf05aa15b50c08c8","ref":"refs/heads/main","pushedAt":"2023-11-25T03:27:58.000Z","pushType":"push","commitsCount":10000,"pusher":{"login":"lazyparser","name":"Wei Wu","path":"/lazyparser","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1802104?s=80&v=4"},"commit":{"message":"[llvm][X86WinEHState] Replace calls to 'Type::getPointerTo' (NFC)\n\nWork towards to the TODO item of removing method `Type::getPointerTo`\n(as noted in llvm/include/llvm/IR/Type.h).","shortMessageHtmlLink":"[llvm][X86WinEHState] Replace calls to 'Type::getPointerTo' (NFC)"}},{"before":"d5c8dc8bc8e79d309bf3277bd028fc87b5988d8c","after":"9df11dab240ec9b9d070d3562edf7765d33d111d","ref":"refs/heads/simd_for_upstream","pushedAt":"2023-10-26T07:07:58.000Z","pushType":"push","commitsCount":3,"pusher":{"login":"joy2myself","name":"ZhangYin","path":"/joy2myself","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/43837589?s=80&v=4"},"commit":{"message":"add simd.math","shortMessageHtmlLink":"add simd.math"}},{"before":"a90318192a1127ba7c692b4d93d43e0b644503a8","after":"d5c8dc8bc8e79d309bf3277bd028fc87b5988d8c","ref":"refs/heads/simd_for_upstream","pushedAt":"2023-06-25T05:11:56.422Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"joy2myself","name":"ZhangYin","path":"/joy2myself","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/43837589?s=80&v=4"},"commit":{"message":"[simd] make clang-tidy happy and solve rebase err\n* cmake: solve rebase err\n* tidy: add missing `_LIBCPP_HIDE_FROM_ABI` and `inline`\n* tidy: change the var naming\n* diff: update transitive_includes\n* format: 6_supply_func.pass\n* misc: remove un-necessary header and update var naming in 5_sequential_version","shortMessageHtmlLink":"[simd] make clang-tidy happy and solve rebase err"}},{"before":"cef8f814d6ed7caef0660f8d4159426834478b65","after":"a90318192a1127ba7c692b4d93d43e0b644503a8","ref":"refs/heads/simd_for_upstream","pushedAt":"2023-06-15T06:40:16.926Z","pushType":"push","commitsCount":4,"pusher":{"login":"joy2myself","name":"ZhangYin","path":"/joy2myself","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/43837589?s=80&v=4"},"commit":{"message":"[simd] fix test error in 6_supply_func.pass.cpp","shortMessageHtmlLink":"[simd] fix test error in 6_supply_func.pass.cpp"}},{"before":"123fead8623fb8c1b09690380e86c70642a67f67","after":"cef8f814d6ed7caef0660f8d4159426834478b65","ref":"refs/heads/simd_for_upstream","pushedAt":"2023-05-04T09:02:03.000Z","pushType":"push","commitsCount":4,"pusher":{"login":"joy2myself","name":"ZhangYin","path":"/joy2myself","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/43837589?s=80&v=4"},"commit":{"message":"[simd] update github action workflow with incorrect path","shortMessageHtmlLink":"[simd] update github action workflow with incorrect path"}},{"before":"b0a9dab0ddf20efaf0132aab501ada56539643fa","after":"123fead8623fb8c1b09690380e86c70642a67f67","ref":"refs/heads/simd_for_upstream","pushedAt":"2023-03-25T09:20:03.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"lazyparser","name":"Wei Wu","path":"/lazyparser","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1802104?s=80&v=4"},"commit":{"message":"[simd] support type_algorithm to make code more clean\n\n[simd] update with type_algorithm to make code cleaner\n\n[simd] update typo in test_utils.h","shortMessageHtmlLink":"[simd] support type_algorithm to make code more clean"}},{"before":"be83d0e2f350d3f27286a743feb570afaeaed0c5","after":"b0a9dab0ddf20efaf0132aab501ada56539643fa","ref":"refs/heads/simd_for_upstream","pushedAt":"2023-03-15T07:28:48.528Z","pushType":"push","commitsCount":7,"pusher":{"login":"joy2myself","name":"ZhangYin","path":"/joy2myself","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/43837589?s=80&v=4"},"commit":{"message":"[simd] fix length for simd fixed and deduce","shortMessageHtmlLink":"[simd] fix length for simd fixed and deduce"}}],"hasNextPage":false,"hasPreviousPage":false,"activityType":"all","actor":null,"timePeriod":"all","sort":"DESC","perPage":30,"cursor":"djE6ks8AAAAETLMu5QA","startCursor":null,"endCursor":null}},"title":"Activity ยท plctlab/llvm-project"}