Clang Migration
Feb 2023
One of the key contributors in the effort towards migrating the OpenMP codegen in Clang to the MLIR based
OpenMPIRBuilder. This work
would enable the OpenMP MLIR dialect and Clang to share a lot of the codebase, thus improving code quality and
reducing code duplication. LLVM Phabricator: reviews.llvm.org/p/TIFitis.
OpenMP
Sep 2022
Working on adding device offloading support features to the OpenMP dialect in MLIR. Our team was the first to
achieve end-to-end kernel execution on device for the llvm-flang driver. Received AMD Spotlight award in
recognition of this work. LLVM Phabricator: reviews.llvm.org/p/TIFitis.
LLVM-Flang
Sep 2022
Currently working on developing and adding language support, particulary for OpenMP to the llvm-flang driver
for Fortran. llvm-flang is the new MLIR based frontend for Fortran in LLVM. LLVM Phabricator: reviews.llvm.org/p/TIFitis.
Proteus: Polymorphic Compilation
Jun 2021
Proteus is a compiler tool which uses polymorphic compilation and execution techniques to mitigate a class of
side channel attacks with minimal performance
overhead, compared to the other state-of-the-art solutions available. This work was done as part of my master's
thesis project.
BPI Enhancements
GitHub
Apr 2020
Proposed and implemented improvements to the Branch Probability Information
pass in LLVM to allow better static profiling leading to speed-up of up to 1.07x, as
part of the course project for Advanced Compiler Optimizations - CS6240.
Accepted as a poster in
EuroLLVM-20 held at Paris, France.
Loop Acceleration
GitHub
Oct 2019
Added a loop acceleration module to the Pinaka verifier for quick detection of counterexamples in loops
simulating polynomial functions. Pinaka is developed by IITH Software Verifcation Group which won the
third-fastest verifier position in SV-COMP’20
Floats sub-category, amongst other positions and was the only entry from Indian
academia.
Appreciated by the Dept. of CSE for this work here.
LLVM2GOTO
GitHub
Sep 2019
A tool to translate LLVM IR to CBMC-GOTO. LLVM supports multiple
front-ends like C, C++, FORTRAN, Swift, etc., which get converted to LLVM-IR. CBMC
is a tool to verify programs which has its own GOTO IR. Our tool translates LLVM-IR
to GOTO IR, allowing us to potentially verify all the languages that have a front-end in LLVM, and also verify
programs post LLVM optimizations.
COOL Compiler
Aug 2019
Designed and implemented a compiler for the COOL language to generate LLVM IR
as part of the course project for Advanced Compiler Design - CS CS6240.
SAT Solvers
GitHub
Mar 2019
Implemented DPLL SAT Solver with MOMS heuristics, CDCL SAT Solver with Lazy Datastructure and Watch Literals,
MaxSAT with Totalizer encoding and an Incomplete SAT Solver based on Break-only-poly algorithm and WalkSAT. As
part of the course project for Constraint Programming - CS6483.
Hybrid Mutual Exclusion in Distributed Systems
GitHub
Nov 2018
An efficient implementation of a hybrid mutual exclusion algorithm for distributed systems by combining
Raymond’s and Maekawa’s algorithms by multiplexing
between them when communicating within clusters and across clusters, based on
load, latency and throughput. As part of the course project for Distributed Computing - CS5320.
Thin Slicing in GOTO
Nov 2018
Implemented thin-slicing in CBMC-GOTO. Slicing is a beneficial tool in debugging large programs, by only
presenting the relevant sections of code, allowing the programmer to focus and debug more efficiently. As part
of the course project for Compiler Engineering - CS6383.
Bitcoin Wallet
GitHub
Oct 2018
Created a BTC wallet application which can create and manage BTC addresses,
and also handle transactions with support for both single and multisig authorization. This was done as part of
the course project for Blockchain-Theory & Practice -
CS5543.
Game - A Lost Tale
Feb 2017
Developed a 3D visual game in Unity-Game engine using Blender with 3d modelling, animation, world design,
lighting and particle systems. A video demo of the game is
available here. As part of a summer
project during bachelor's.