Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
19 commits
Select commit Hold shift + click to select a range
8410bcc
Add custom rounds implementation
dmitrii-artuhov Jan 15, 2026
54ddcf2
Add a test with custom round
dmitrii-artuhov Jan 15, 2026
eed4144
Increase CI timeout
dmitrii-artuhov Jan 16, 2026
b92fdef
Fix bug in pretty printer which used std::cout instead of out from args
dmitrii-artuhov Jan 16, 2026
9920f75
Unify `StartNextRound` method between startegies and override `SetCus…
dmitrii-artuhov Jan 22, 2026
2bf8eca
Add parameter to the clangpass which substitutes std::atomic's with t…
dmitrii-artuhov Jan 22, 2026
804db6f
Add wmm implementation classes
dmitrii-artuhov Jan 22, 2026
8cbfb35
Add global variable which shows what is the currently running thread …
dmitrii-artuhov Jan 22, 2026
fe564ec
Invoke wmm graph methods from latomics implementation when `wmm_enabl…
dmitrii-artuhov Jan 25, 2026
2ec24dd
Add simple manual wmm litmus tests
dmitrii-artuhov Jan 25, 2026
3e1a508
Extract litmus test to separate files
dmitrii-artuhov Feb 5, 2026
fb1b7ed
Make recursive instrumentation under a specifi flag `LTEST_RECURSIVE_…
dmitrii-artuhov Feb 8, 2026
1c5189f
Add litmus tests which could fail expectedly and causes exit code 1 (…
dmitrii-artuhov Feb 8, 2026
b350839
Run litmus tests on CI via `ctest`
dmitrii-artuhov Feb 8, 2026
9e2e65c
Add a todo comment to the litmus test 6 (it fails which is correct, b…
dmitrii-artuhov Mar 18, 2026
d8df26c
Implement unconditional RMW operations (exchange, fetch_add, fetch_su…
dmitrii-artuhov Mar 20, 2026
313fc46
Print read value in Load operations of wmm
dmitrii-artuhov Mar 24, 2026
e244dd7
Add tests for exchange, fetch_add, and fetch_sub
dmitrii-artuhov Mar 24, 2026
eb18868
Add simple litmus tests for all supported atomic operations
dmitrii-artuhov Mar 24, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
28 changes: 26 additions & 2 deletions .github/workflows/run-tests.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ jobs:
container:
image: silkeh/clang:19
options: --user root
timeout-minutes: 20
timeout-minutes: 30
steps:
- name: Install deps
run: |
Expand All @@ -45,8 +45,32 @@ jobs:
run: |
cmake -G Ninja -B build -DCMAKE_BUILD_TYPE=RelWithAssert
cmake --build build --target verify-targets verify-blocking
- name: "Tests"
- name: "Verifying tests"
run: ctest --parallel 4 --test-dir build -L "verify" -V
litmus-test:
runs-on: ubuntu-latest
defaults:
run:
shell: bash
container:
image: silkeh/clang:19
options: --user root
timeout-minutes: 30
steps:
- name: Install deps
run: |
apt update && apt install -y git ninja-build valgrind libgoogle-glog-dev libsnappy-dev protobuf-compiler libboost-context-dev pkg-config libcapstone-dev libclang-19-dev && \
git clone https://github.com/Kirillog/syscall_intercept.git && \
cmake syscall_intercept -G Ninja -B syscall_intercept/build -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_BUILD_TYPE=Release -DCMAKE_C_COMPILER=clang && \
cmake --build syscall_intercept/build --target install
- name: Check out repository code
uses: actions/checkout@v4
- name: Build
run: |
cmake -G Ninja -B build -DCMAKE_BUILD_TYPE=RelWithAssert
cmake --build build --target verify-litmus
- name: "Litmus tests"
run: ctest --parallel 4 --test-dir build -L "litmus" -V
verifying-folly-release:
runs-on: ubuntu-latest
env:
Expand Down
7 changes: 6 additions & 1 deletion codegen/yieldpass.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -119,7 +119,12 @@ struct YieldInserter {
}
}

#ifndef DEBUG
// This change was added to instrument methods recusively for some VK data
// structure, which had a lot of methods inside of it. This change allows to
// insert thread interleavings in the methods without marking them with
// `non_atomic` attribute. This flag is unset by default, because it might cause
// wmm tests to instrument the LTest code, which is leads to errors.
#if defined(LTEST_RECURSIVE_YIELDS)
for (auto &B : F) {
for (auto &I : B) {
if (auto call = dyn_cast<CallInst>(&I)) {
Expand Down
1 change: 0 additions & 1 deletion runtime/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@ set (SOURCE_FILES
lib.cpp
lin_check.cpp
logger.cpp
pretty_printer.cpp
verifying.cpp
generators.cpp
minimization.cpp
Expand Down
12 changes: 12 additions & 0 deletions runtime/include/custom_round.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
#pragma once

#include <vector>

#include "lib.h"

struct CustomRound {
CustomRound(std::vector<std::vector<TaskBuilder>> threads_)
: threads(threads_) {}

std::vector<std::vector<TaskBuilder>> threads;
};
Loading