Get the latest tech news
Byte Type: Supporting Raw Data Copies in the LLVM IR
This summer I participated in GSoC under the LLVM Compiler Infrastructure. The goal of the project was to add a new byte type to the LLVM IR, capable of representing raw memory values.
Additionally, code generation was updated to insert missing bytecast instructions where integer values were previously expected, such as in arithmetic and comparison operations involving character types. BenchmarkVersionLoCDescription aircrack-ng1.766,988Tool suite to test WiFi/WLAN network securitybotan2.17.3147,832C++ library for cryptographic operationscompress-7zip24.05247,211File archiving tool based on the 7-Zip formatcompress-pbzip21.1.1310,187Parallel implementation of bzip2compress-zstd1.5.490,489Lossless compression tool using Zstandarddraco1.5.650,0073D mesh and point cloud compressing libraryespeak1.5145,192Compact open-source speech synthesizerffmpeg7.01,291,957Audio and video processing frameworkfftw3.3.10264,128Library for computing FFTsgraphics-magick1.3.43267,450Toolkit for image editing and conversionluajit2.1-git68,833JIT-compiler of the Lua programming languagengspice34527,637Open-source circuit simulatoropenssl3.3597,713Implementation of SSL/TLSredis7.0.4178,014In-memory data storernnoise0.2146,693Neural network for audio noise reductionscimark22.0800Scientific computing suite written in ANSI Csqlite-speedtest3.30250,607Program for executing SQLite database testsstockfish1711,054Advanced open-source chess enginetjbench2.1.057,438JPEG encoding and decoding toolz34.14.1512,002SMT solver and theorem proverAll programs were compiled with the-O3 pipeline on an AMD EPYC 9554P 64-Core CPU. The following plots show per-function assembly size distributions and differences, indicating that the addition of the byte type results in minor changes to the generated code, with the largest observed shift being approximately 5%.
Or read this on Hacker News