Skip to content

Commit

Permalink
Add projects-with-llvm page & data
Browse files Browse the repository at this point in the history
  • Loading branch information
Chaitanya-Shahare committed Oct 18, 2024
1 parent f60ef84 commit 0dae9ad
Show file tree
Hide file tree
Showing 5 changed files with 501 additions and 2 deletions.
21 changes: 21 additions & 0 deletions content/gsoc-projects/_index.md
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"
>}}
20 changes: 20 additions & 0 deletions content/projects-with-llvm/_index.md
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"
>}}
52 changes: 52 additions & 0 deletions data/gsoc_projects.yml
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"
Loading

0 comments on commit 0dae9ad

Please sign in to comment.