CoolFace
Datasetpublic

murodbek/bringup_asm

BringUpBench C and Assembly This dataset pairs C programs from BringUpBench 1.9 with assembly generated by Clang 17 for four CPU targets and seven optimization levels. It is intended for research on compilation, decompilation, assembly understanding, and cross-architecture code translation. Dataset structure The dataset contains 108 programs. Each optimization level is stored as a separate Hugging Face split, with 108 rows per split. These are compiler… See the full description on the dataset page: https://huggingface.co/datasets/murodbek/bringup_asm.

sourceHugging Faceapache-2.0updated 24d agoView on Hugging Face
0likes64downloads
Dataset Card

BringUpBench C and Assembly

This dataset pairs C programs from BringUpBench 1.9 with assembly generated by Clang 17 for four CPU targets and seven optimization levels. It is intended for research on compilation, decompilation, assembly understanding, and cross-architecture code translation.

Dataset structure

The dataset contains 108 programs. Each optimization level is stored as a separate Hugging Face split, with 108 rows per split.

These are compiler configurations, not predefined training, validation, or test sets. The same 108 tasks appear in every split, so users should split by task_name before training to avoid data leakage across optimization levels.

Each row has the following fields:

FieldDescription
task_nameBringUpBench program name
source_codeC source code from the program's primary translation unit
x86x86-64 Linux assembly in Intel syntax
arm_linuxAArch64 Linux assembly
riscvRISC-V RV64GC Linux assembly using the LP64D ABI
arm_appleAArch64 Apple Darwin assembly

Usage

Load every optimization level:

python
from datasets import load_dataset

dataset = load_dataset("murodbek/bringup_asm")
print(dataset)

example = dataset["O2"][0]
print(example)

Load only one optimization level:

python
from datasets import load_dataset

dataset = load_dataset("murodbek/bringup_asm", split="O2")

Dataset creation

For each BringUpBench program, the primary source file (<task_name>/<task_name>.c) was compiled to assembly with Clang 17. BringUpBench headers were made available during compilation, and TARGET_HOST and TARGET_PERFHOOKS were defined.

The architecture-specific compiler options were:

text
x86:       -target x86_64-unknown-linux-gnu -masm=intel
arm_linux: -target aarch64-linux-gnu
riscv:     -target riscv64-unknown-linux-gnu -march=rv64gc -mabi=lp64d
arm_apple: -target arm64-apple-darwin

Linux-targeted and Apple-targeted outputs were generated separately, joined on task_name and source_code, and sorted by task name.

Important notes

  • source_code contains the primary C translation unit, not every header or support file used by the original benchmark.
  • The assembly may reference BringUpBench runtime functions or external symbols. A row is therefore not necessarily a standalone, linkable program by itself.
  • Results represent one compiler family and version: Clang 17. Assembly produced by other compilers or versions may differ substantially.
  • Architecture columns should not be assumed to have identical instruction-by-instruction behavior or formatting, even though they originate from the same C source.
  • Because the same programs occur at every optimization level, random row-level splitting across the full dataset can leak the same source program into both training and evaluation sets.

Source and license

The source programs come from toddmaustin/bringup-bench, version 1.9. BringUpBench states that portions developed by its benchmark team are copyright 2021–2024 and distributed under the Apache License 2.0. Some programs were adapted from other projects; users should retain and review any notices associated with those individual sources.

If you use this dataset, please also credit the original BringUpBench project and its contributors.