Contents
Part I Running tests with
litmus7
1 A tour of
litmus7
1.1 A simple run
1.2 Cross compilation
1.3 Running several tests at once
2 Controlling test parameters
2.1 Architecture of tests
2.2 Affinity
2.2.1 Introduction to affinity
2.2.2 Study of affinity
2.2.3 Advanced control
2.2.4 Custom control
2.3 Controlling executable files
3 Advanced control of test parameters
3.1 Timebase synchronisation mode
3.2 Advanced prefetch control
3.2.1 Custom prefetch
3.2.2 Prefetch metadata
3.2.3 “Static” prefetch control
4 Usage of
litmus7
Part II Generating tests
5 Preamble
5.1 Relaxation of Sequential Consistency
5.2 Introduction to candidate relaxations
5.3 More candidate relaxations
5.4 Summary of simple candidate relaxations
5.4.1 Communication candidate relaxations
5.4.2 Program order candidate relaxations
5.4.3 Fence candidate relaxations
6 Testing candidate relaxations with
diy7
6.1 Principle
6.2 Testing x86
7 Additional relaxations
7.1 Intra-processor dependencies
7.2 Composite relaxations and cumulativity
7.3 Detour candidate relaxations
8 Test variations with
diycross7
9 Identifying coherence orders with observers
9.1 Simple observers
9.2 More observers
9.2.1 Fences and loops in observers
9.2.2 Local observers
9.2.3 Performance of observers
9.3 Three stores or more
10 Command usage
10.1 A note on test names
10.1.1 Family names
10.1.2 Descriptive names for variants
10.2 Common options
10.3 Usage of
diyone7
10.4 Usage of
diycross7
10.5 Usage of
diy7
10.6 Usage of
readRelax7
11 Additional tools: extracting cycles and classification
11.1 Usage of
mcycle7
11.2 Usage of
classify7
Part III Simulating memory models with
herd7
12 Writing simple models
12.1 Sequential consistency
12.2 Total Store Order (TSO)
12.3 Sequential consistency, total order definition
12.4 Computing coherence orders
13 Producing pictures of executions
13.1 Graph modes
13.2 Showing forbidden executions
14 Model definitions
14.1 Overview
14.2 Identifiers
14.3 Expressions
14.4 Instructions
14.5 Models
14.6 Primitives
14.7 Library
15 Usage of
herd7
15.1 Arguments
15.2 Options
15.3 Configuration files
15.4 File searching
Part IV Some examples
16 Running several tests at once, changing critical parameters
17 Cross compiling, affinity experiment
18 Cross running, testing low-end devices