Skip to content

Commit 0dae9ad

Browse files
Add projects-with-llvm page & data
1 parent f60ef84 commit 0dae9ad

File tree

5 files changed

+501
-2
lines changed

5 files changed

+501
-2
lines changed

content/gsoc-projects/_index.md

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
---
2+
title: 'GSoC Projects'
3+
description: ""
4+
toc: true
5+
tags: []
6+
draft: false
7+
---
8+
9+
## GSoC 2024 Projects
10+
11+
{{< datamap
12+
"gsoc_projects" "gsoc_projects"
13+
"title"
14+
"description"
15+
"expected_result"
16+
"skills"
17+
"project_size"
18+
"difficulty"
19+
"mentors:<a href='{url}'>{name}</a>"
20+
"discourse_url"
21+
>}}

content/projects-with-llvm/_index.md

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
---
2+
title: 'Projects built with LLVM'
3+
description: ""
4+
toc: true
5+
tags: []
6+
draft: false
7+
---
8+
9+
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/).
10+
11+
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.
12+
13+
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:llvm-dev@lists.llvm.org) 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.
14+
15+
{{< datamap
16+
"projects_with_llvm" "projects"
17+
"title"
18+
"subtitle"
19+
"description"
20+
>}}

data/gsoc_projects.yml

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
gsoc_projects:
2+
- title: "Remove undefined behavior from tests"
3+
description: |
4+
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).
5+
The major steps include:
6+
7+
1. Replace known patterns such as branch on undef/poison, memory accesses with invalid pointers, etc with non-UB patterns.
8+
2. Use Alive2 to detect further patterns (by searching for tests that are always UB).
9+
3. Report any LLVM bug found by Alive2 that is exposed when removing UB.
10+
expected_result: "The majority of LLVM's unit tests will be free of UB."
11+
skills: "Experience with scripting (Python or PHP) is required. Experience with regular expressions is encouraged."
12+
project_size: "Either medium or large."
13+
difficulty: "Medium"
14+
mentors:
15+
- name: "Nuno Lopes"
16+
url: "https://web.ist.utl.pt/nuno.lopes/"
17+
discourse_url: "https://discourse.llvm.org/t/gsoc-2004-remove-undefined-behavior-from-tests/77236"
18+
- title: "Automatically generate TableGen file for SPIR-V instruction set"
19+
description: |
20+
The existing file that describes the SPIR-V instruction set in
21+
LLVM was manually created and is not always complete or up to date. Whenever
22+
new instructions need to be added to the SPIR-V backend, the file must be
23+
amended. In addition, since it is not created in a systematic way, there are
24+
often slight discrepancies between how an instruction is described in the
25+
SPIR-V spec and how it is declared in the TableGen file. Since SPIR-V
26+
backend developers often use the spec as a reference when developing new
27+
features, having a consistent mapping between the specification and TableGen
28+
records will ease development.
29+
30+
This project proposes creating a script
31+
capable of generating a complete TableGen file that describes the SPIR-V
32+
instruction set given the JSON grammar available in the
33+
KhronosGroup/SPIRV-Headers repository, and updating SPIR-V backend code to
34+
use the new definitions. The specific method used for translating the JSON
35+
grammar to TableGen is left up to the discretion of the applicant, however,
36+
it should be checked into the LLVM repository with well-documented
37+
instructions to replicate the translation process so that future maintainers
38+
will be able to regenerate the file when the grammar changes. Note that the
39+
grammar itself should remain out-of-tree in its existing separate
40+
repository.
41+
expected_result: |
42+
The SPIR-V instruction set's definition in TableGen is replaced with one that is autogenerated.
43+
A script and documentation are written that support regenerating the definitions as needed given the JSON grammar of the SPIR-V instruction set.
44+
Usage of the SPIR-V instruction set in the SPIR-V backend updated to use the new autogenerated definitions.
45+
skills: "Experience with scripting and an intermediate knowledge of C++. Previous experience with LLVM/TableGen is a bonus but not required."
46+
project_size: "Medium (175 hour)"
47+
mentors:
48+
- name: "Natalie Chouinard"
49+
url: "https://github.com/sudonatalie/"
50+
- name: "Nathan Gauër"
51+
url: "https://github.com/keenuts/"
52+
discourse_url: "https://discourse.llvm.org/t/clang-automatically-generate-tablegen-file-for-spir-v-instruction-set/76369"

0 commit comments

Comments
 (0)