Jozef Lawrynowicz

Skills


  • C/C++, Bash, Python
  • GCC/LLVM Development, CPU Architecture, Compiler Design, Assembly Programming, Linux, Git

Experience


Texas Instruments - Software Engineering Consultant Nov 2017 – Dec 2020 (Remote)

MSP430-GCC - GNU C/C++ Toolchain for TI MSP430

Led development of MSP430-GCC, launching new releases on ti.com, achieving 2,500+ downloads per year

  • Achieved and exceeded a project goal to match the code size benchmark results of a competing toolchain, reducing code size by 35%, by developing improvements across all toolchain components
  • Increased CPU multiplication performance by over 70%, by enhancing the compiler backend and runtime libraries, implementing optimized assembly code routines for hardware multiply and shift operations
  • Improved CoreMark performance by 10%, by analyzing generated code and optimizing instruction selection in the MSP430 compiler backend
  • Shrunk code size by 5%, by implementing a compiler cost model to improve intermediate code generation, using the MSP430 CPU architecture manual as a reference to guide the implementation
  • Implemented a Buildbot-based CI system, developing Python and Bash scripts to automate the process of building, regression testing, benchmarking, and packaging the toolchain for Linux, Windows and macOS
  • Improved developer productivity by designing and implementing the SHF_GNU_RETAIN ELF section flag, facilitating the implementation of the “retain” attribute in the upstream GNU and LLVM toolchains
  • Coordinated with cross-discipline teams to ensure robust integration of MSP430-GCC into the Code Composer Studio IDE, used by 100,000+ developers
  • Collaborated with the GNU toolchain community, contributing over 150 patches to the open source GCC, Binutils, GDB and Newlib projects, adding new features, enhancing code generation, and fixing bugs
Somnium Technologies - Software Engineer Aug 2015 – Aug 2017 (Chepstow, UK)

Somnium DRT ARM Cortex-M Development Tools

  • Improved CPU performance by up to 15%, by implementing a function reordering linker optimization to identify hot functions and improve their cache behavior
  • Increased developer productivity by eliminating the manual steps required to identify CPU faults, by implementing an Eclipse IDE plugin to automatically diagnose faults during debugging sessions

MSP430-GCC - GNU C/C++ Toolchain for TI MSP430

  • Improved developer velocity, maximizing MCU memory utilization, by implementing a GNU linker feature to optimize section placement between non-homogeneous memory regions
  • Simplified toolchain maintenance by developing functionality for MCU-specific properties to be read from an external file, enabling support for new MCUs to be added without toolchain rebuilds

Projects


LLVM July 2021 – Sep 2021

Analyzed MSP430 support in LLVM, to develop a short-term roadmap to providing impactful improvements

  • Simplified option specification for users, adding support for Clang to infer the CPU type for specific MCUs
  • Reduced code size by 4%, by implementing support for MSP430X shift and push/pop instructions

Education


University of Bristol May 2015 (Bristol, UK)
  • BSc (Hons) in Computer Science (1st Class)
  • Final Year Project: Automated Guitar Solo Transcription (Awarded “Best Final Year Project”)