-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
f60ef84
commit 0dae9ad
Showing
5 changed files
with
501 additions
and
2 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,21 @@ | ||
--- | ||
title: 'GSoC Projects' | ||
description: "" | ||
toc: true | ||
tags: [] | ||
draft: false | ||
--- | ||
|
||
## GSoC 2024 Projects | ||
|
||
{{< datamap | ||
"gsoc_projects" "gsoc_projects" | ||
"title" | ||
"description" | ||
"expected_result" | ||
"skills" | ||
"project_size" | ||
"difficulty" | ||
"mentors:<a href='{url}'>{name}</a>" | ||
"discourse_url" | ||
>}} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,20 @@ | ||
--- | ||
title: 'Projects built with LLVM' | ||
description: "" | ||
toc: true | ||
tags: [] | ||
draft: false | ||
--- | ||
|
||
This page is an incomplete list of the projects built with LLVM, sorted in reverse chronological order. The idea of this list is to show some of the things that have been done with LLVM for various course projects or for other purposes, which can be used as a source of ideas for future projects. Another good place to look is the list of [published papers and theses that use LLVM](https://llvm.org/pubs/). | ||
|
||
Note that this page is not intended to reflect that current state of LLVM or show endorsement of any particular project over another. This is just a showcase of the hard work various people have done. It also shows a bit about how the capabilities of LLVM have evolved over time. | ||
|
||
We are always looking for new contributions to this page. If you work on a project that uses LLVM for a course or a publication, we would definitely like to hear about it, and would like to include your work here as well. Please just send email to [ the LLVM-dev mailing list ](mailto:[email protected]) with an entry like those below. We're not particularly looking for source code (though we welcome source-code contributions through the normal channels), but instead would like to put up the "polished results" of your work, including reports, papers, presentations, posters, or anything else you have. | ||
|
||
{{< datamap | ||
"projects_with_llvm" "projects" | ||
"title" | ||
"subtitle" | ||
"description" | ||
>}} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,52 @@ | ||
gsoc_projects: | ||
- title: "Remove undefined behavior from tests" | ||
description: | | ||
Many of LLVM's unit tests have been reduced automatically from larger tests. Previous-generation reduction tools used undef and poison as placeholders everywhere, as well as introduced undefined behavior (UB). Tests with UB are not desirable because 1) they are fragile since in the future the compiler may start optimizing more aggressively and break the test, and 2) it breaks translation validation tools such as Alive2 (since it's correct to translate a function that is always UB into anything). | ||
The major steps include: | ||
1. Replace known patterns such as branch on undef/poison, memory accesses with invalid pointers, etc with non-UB patterns. | ||
2. Use Alive2 to detect further patterns (by searching for tests that are always UB). | ||
3. Report any LLVM bug found by Alive2 that is exposed when removing UB. | ||
expected_result: "The majority of LLVM's unit tests will be free of UB." | ||
skills: "Experience with scripting (Python or PHP) is required. Experience with regular expressions is encouraged." | ||
project_size: "Either medium or large." | ||
difficulty: "Medium" | ||
mentors: | ||
- name: "Nuno Lopes" | ||
url: "https://web.ist.utl.pt/nuno.lopes/" | ||
discourse_url: "https://discourse.llvm.org/t/gsoc-2004-remove-undefined-behavior-from-tests/77236" | ||
- title: "Automatically generate TableGen file for SPIR-V instruction set" | ||
description: | | ||
The existing file that describes the SPIR-V instruction set in | ||
LLVM was manually created and is not always complete or up to date. Whenever | ||
new instructions need to be added to the SPIR-V backend, the file must be | ||
amended. In addition, since it is not created in a systematic way, there are | ||
often slight discrepancies between how an instruction is described in the | ||
SPIR-V spec and how it is declared in the TableGen file. Since SPIR-V | ||
backend developers often use the spec as a reference when developing new | ||
features, having a consistent mapping between the specification and TableGen | ||
records will ease development. | ||
This project proposes creating a script | ||
capable of generating a complete TableGen file that describes the SPIR-V | ||
instruction set given the JSON grammar available in the | ||
KhronosGroup/SPIRV-Headers repository, and updating SPIR-V backend code to | ||
use the new definitions. The specific method used for translating the JSON | ||
grammar to TableGen is left up to the discretion of the applicant, however, | ||
it should be checked into the LLVM repository with well-documented | ||
instructions to replicate the translation process so that future maintainers | ||
will be able to regenerate the file when the grammar changes. Note that the | ||
grammar itself should remain out-of-tree in its existing separate | ||
repository. | ||
expected_result: | | ||
The SPIR-V instruction set's definition in TableGen is replaced with one that is autogenerated. | ||
A script and documentation are written that support regenerating the definitions as needed given the JSON grammar of the SPIR-V instruction set. | ||
Usage of the SPIR-V instruction set in the SPIR-V backend updated to use the new autogenerated definitions. | ||
skills: "Experience with scripting and an intermediate knowledge of C++. Previous experience with LLVM/TableGen is a bonus but not required." | ||
project_size: "Medium (175 hour)" | ||
mentors: | ||
- name: "Natalie Chouinard" | ||
url: "https://github.com/sudonatalie/" | ||
- name: "Nathan Gauër" | ||
url: "https://github.com/keenuts/" | ||
discourse_url: "https://discourse.llvm.org/t/clang-automatically-generate-tablegen-file-for-spir-v-instruction-set/76369" |
Oops, something went wrong.