├── .gitignore ├── BPF ├── BPFlitmusout.awk ├── README ├── c2asmfuncs.awk ├── c2bpf.sh ├── c2ppc.sh ├── findbpfreadytests.sh ├── judgelitmus.sh ├── runlitmus.sh └── runlitmustree.sh ├── LICENSE ├── RCUlitmusGen ├── .gitignore ├── LISA2C.sh ├── RCULBlitmusgen.awk ├── RCUlitmusCout.awk ├── RCUlitmusgen.awk ├── RCUlitmusout-test.sh ├── RCUlitmusout.awk ├── README ├── RunAllLitmus.sh ├── RunLitmus.sh ├── RunReduce.sh ├── auto ├── dir2litmus.sh ├── gendir.sh ├── getreason.sh ├── lisa2c-check.sh ├── lisa2c-conv.sh ├── lisa2c.sh ├── makelitmustests.sh ├── necklace.awk ├── necklace.sh ├── runAllCat.sh └── todo.txt ├── RCUxlate ├── .gitignore ├── Makefile ├── RCUghostrelacq.sh ├── RCUghostrelacqC.sh ├── RCUrelacq.sh ├── RCUxlate.sh ├── RCUxlateLight.sh ├── RCUxlateperfgen.sh ├── README └── stripocamlcomment.c ├── auto ├── C-LB-GRR+OB-O+OB-O+OB-O+OB-OB.litmus ├── C-LB-GRR+OB-O+OB-O+OB-OB.litmus ├── C-LB-GRR+OB-O+OB-OB.litmus ├── C-LB-GRR+OB-OB.litmus ├── C-LB-GRR+R-A+O-Dd.litmus ├── C-LB-GRR+R-A+OB-Dd.litmus ├── C-LB-GRR+R-A+OB-O+OB-O+OB-OB.litmus ├── C-LB-GRR+R-A+OB-O+OB-O+R-Oc.litmus ├── C-LB-GRR+R-A+OB-O+OB-OB.litmus ├── C-LB-GRR+R-A+OB-O+R-A+OB-OB.litmus ├── C-LB-GRR+R-A+OB-O+R-A+R-Oc.litmus ├── C-LB-GRR+R-A+OB-O+R-Oc+OB-OB.litmus ├── C-LB-GRR+R-A+OB-O+R-Oc+R-Oc.litmus ├── C-LB-GRR+R-A+OB-O+R-Oc.litmus ├── C-LB-GRR+R-A+OB-OB.litmus ├── C-LB-GRR+R-A+R-A+OB-O+OB-OB.litmus ├── C-LB-GRR+R-A+R-A+OB-O+R-Oc.litmus ├── C-LB-GRR+R-A+R-A+OB-OB.litmus ├── C-LB-GRR+R-A+R-A+R-A+OB-OB.litmus ├── C-LB-GRR+R-A+R-A+R-A+R-A.litmus ├── C-LB-GRR+R-A+R-A+R-A+R-Oc.litmus ├── C-LB-GRR+R-A+R-A+R-A.litmus ├── C-LB-GRR+R-A+R-A+R-Oc+OB-OB.litmus ├── C-LB-GRR+R-A+R-A+R-Oc+R-Oc.litmus ├── C-LB-GRR+R-A+R-A+R-Oc.litmus ├── C-LB-GRR+R-A+R-A.litmus ├── C-LB-GRR+R-A+R-Dd.litmus ├── C-LB-GRR+R-A+R-Oc+OB-O+OB-OB.litmus ├── C-LB-GRR+R-A+R-Oc+OB-O+R-Oc.litmus ├── C-LB-GRR+R-A+R-Oc+OB-OB.litmus ├── C-LB-GRR+R-A+R-Oc+R-A+R-Oc.litmus ├── C-LB-GRR+R-A+R-Oc+R-Oc+OB-OB.litmus ├── C-LB-GRR+R-A+R-Oc+R-Oc+R-Oc.litmus ├── C-LB-GRR+R-A+R-Oc+R-Oc.litmus ├── C-LB-GRR+R-A+R-Oc.litmus ├── C-LB-GRR+R-A.litmus ├── C-LB-GRR+R-Dd+OB-O+OB-O+OB-OB.litmus ├── C-LB-GRR+R-Dd+OB-O+OB-O+R-A.litmus ├── C-LB-GRR+R-Dd+OB-O+OB-O+R-Oc.litmus ├── C-LB-GRR+R-Dd+OB-O+OB-OB.litmus ├── C-LB-GRR+R-Dd+OB-O+R-A+OB-OB.litmus ├── C-LB-GRR+R-Dd+OB-O+R-A+R-A.litmus ├── C-LB-GRR+R-Dd+OB-O+R-A+R-Oc.litmus ├── C-LB-GRR+R-Dd+OB-O+R-A.litmus ├── C-LB-GRR+R-Dd+OB-O+R-Dd+OB-OB.litmus ├── C-LB-GRR+R-Dd+OB-O+R-Dd+R-A.litmus ├── C-LB-GRR+R-Dd+OB-O+R-Dd+R-Oc.litmus ├── C-LB-GRR+R-Dd+OB-O+R-Oc+OB-OB.litmus ├── C-LB-GRR+R-Dd+OB-O+R-Oc+R-A.litmus ├── C-LB-GRR+R-Dd+OB-O+R-Oc+R-Oc.litmus ├── C-LB-GRR+R-Dd+OB-O+R-Oc.litmus ├── C-LB-GRR+R-Dd+OB-OB.litmus ├── C-LB-GRR+R-Dd+R-A+OB-O+OB-OB.litmus ├── C-LB-GRR+R-Dd+R-A+OB-O+R-A.litmus ├── C-LB-GRR+R-Dd+R-A+OB-O+R-Oc.litmus ├── C-LB-GRR+R-Dd+R-A+OB-OB.litmus ├── C-LB-GRR+R-Dd+R-A+R-A+OB-OB.litmus ├── C-LB-GRR+R-Dd+R-A+R-A+R-A.litmus ├── C-LB-GRR+R-Dd+R-A+R-A+R-Oc.litmus ├── C-LB-GRR+R-Dd+R-A+R-A.litmus ├── C-LB-GRR+R-Dd+R-A+R-Dd+R-A.litmus ├── C-LB-GRR+R-Dd+R-A+R-Oc+OB-OB.litmus ├── C-LB-GRR+R-Dd+R-A+R-Oc+R-A.litmus ├── C-LB-GRR+R-Dd+R-A+R-Oc+R-Oc.litmus ├── C-LB-GRR+R-Dd+R-A+R-Oc.litmus ├── C-LB-GRR+R-Dd+R-A.litmus ├── C-LB-GRR+R-Dd+R-Dd+OB-O+OB-OB.litmus ├── C-LB-GRR+R-Dd+R-Dd+OB-O+R-A.litmus ├── C-LB-GRR+R-Dd+R-Dd+OB-O+R-Oc.litmus ├── C-LB-GRR+R-Dd+R-Dd+OB-OB.litmus ├── C-LB-GRR+R-Dd+R-Dd+R-A+OB-OB.litmus ├── C-LB-GRR+R-Dd+R-Dd+R-A+R-A.litmus ├── C-LB-GRR+R-Dd+R-Dd+R-A+R-Oc.litmus ├── C-LB-GRR+R-Dd+R-Dd+R-A.litmus ├── C-LB-GRR+R-Dd+R-Dd+R-Dd+OB-OB.litmus ├── C-LB-GRR+R-Dd+R-Dd+R-Dd+R-A.litmus ├── C-LB-GRR+R-Dd+R-Dd+R-Dd+R-Dd.litmus ├── C-LB-GRR+R-Dd+R-Dd+R-Dd+R-Oc.litmus ├── C-LB-GRR+R-Dd+R-Dd+R-Dd.litmus ├── C-LB-GRR+R-Dd+R-Dd+R-Oc+OB-OB.litmus ├── C-LB-GRR+R-Dd+R-Dd+R-Oc+R-A.litmus ├── C-LB-GRR+R-Dd+R-Dd+R-Oc+R-Oc.litmus ├── C-LB-GRR+R-Dd+R-Dd+R-Oc.litmus ├── C-LB-GRR+R-Dd+R-Dd.litmus ├── C-LB-GRR+R-Dd+R-Oc+OB-O+OB-OB.litmus ├── C-LB-GRR+R-Dd+R-Oc+OB-O+R-A.litmus ├── C-LB-GRR+R-Dd+R-Oc+OB-O+R-Oc.litmus ├── C-LB-GRR+R-Dd+R-Oc+OB-OB.litmus ├── C-LB-GRR+R-Dd+R-Oc+R-A+OB-OB.litmus ├── C-LB-GRR+R-Dd+R-Oc+R-A+R-A.litmus ├── C-LB-GRR+R-Dd+R-Oc+R-A+R-Oc.litmus ├── C-LB-GRR+R-Dd+R-Oc+R-A.litmus ├── C-LB-GRR+R-Dd+R-Oc+R-Dd+R-A.litmus ├── C-LB-GRR+R-Dd+R-Oc+R-Dd+R-Oc.litmus ├── C-LB-GRR+R-Dd+R-Oc+R-Oc+OB-OB.litmus ├── C-LB-GRR+R-Dd+R-Oc+R-Oc+R-A.litmus ├── C-LB-GRR+R-Dd+R-Oc+R-Oc+R-Oc.litmus ├── C-LB-GRR+R-Dd+R-Oc+R-Oc.litmus ├── C-LB-GRR+R-Dd+R-Oc.litmus ├── C-LB-GRR+R-Dd.litmus ├── C-LB-GRR+R-Oc+OB-O+OB-O+OB-OB.litmus ├── C-LB-GRR+R-Oc+OB-O+OB-OB.litmus ├── C-LB-GRR+R-Oc+OB-O+R-Oc+OB-OB.litmus ├── C-LB-GRR+R-Oc+OB-OB.litmus ├── C-LB-GRR+R-Oc+R-Oc+OB-O+OB-OB.litmus ├── C-LB-GRR+R-Oc+R-Oc+OB-OB.litmus ├── C-LB-GRR+R-Oc+R-Oc+R-Oc+OB-OB.litmus ├── C-LB-GRR+R-Oc+R-Oc+R-Oc+R-Oc.litmus ├── C-LB-GRR+R-Oc+R-Oc+R-Oc.litmus ├── C-LB-GRR+R-Oc+R-Oc.litmus ├── C-LB-GRR+R-Oc.litmus ├── C-LB-GRW+OB-O+OB-O+OB-O+OB-OB.litmus ├── C-LB-GRW+OB-O+OB-O+OB-OB.litmus ├── C-LB-GRW+OB-O+OB-OB.litmus ├── C-LB-GRW+OB-OB.litmus ├── C-LB-GRW+R-A+O-Dd.litmus ├── C-LB-GRW+R-A+OB-Dd.litmus ├── C-LB-GRW+R-A+OB-O+OB-O+OB-OB.litmus ├── C-LB-GRW+R-A+OB-O+OB-O+R-Oc.litmus ├── C-LB-GRW+R-A+OB-O+OB-OB.litmus ├── C-LB-GRW+R-A+OB-O+R-A+OB-OB.litmus ├── C-LB-GRW+R-A+OB-O+R-A+R-Oc.litmus ├── C-LB-GRW+R-A+OB-O+R-Oc+OB-OB.litmus ├── C-LB-GRW+R-A+OB-O+R-Oc+R-Oc.litmus ├── C-LB-GRW+R-A+OB-O+R-Oc.litmus ├── C-LB-GRW+R-A+OB-OB.litmus ├── C-LB-GRW+R-A+R-A+OB-O+OB-OB.litmus ├── C-LB-GRW+R-A+R-A+OB-O+R-Oc.litmus ├── C-LB-GRW+R-A+R-A+OB-OB.litmus ├── C-LB-GRW+R-A+R-A+R-A+OB-OB.litmus ├── C-LB-GRW+R-A+R-A+R-A+R-A.litmus ├── C-LB-GRW+R-A+R-A+R-A+R-Oc.litmus ├── C-LB-GRW+R-A+R-A+R-A.litmus ├── C-LB-GRW+R-A+R-A+R-Oc+OB-OB.litmus ├── C-LB-GRW+R-A+R-A+R-Oc+R-Oc.litmus ├── C-LB-GRW+R-A+R-A+R-Oc.litmus ├── C-LB-GRW+R-A+R-A.litmus ├── C-LB-GRW+R-A+R-Dd.litmus ├── C-LB-GRW+R-A+R-Oc+OB-O+OB-OB.litmus ├── C-LB-GRW+R-A+R-Oc+OB-O+R-Oc.litmus ├── C-LB-GRW+R-A+R-Oc+OB-OB.litmus ├── C-LB-GRW+R-A+R-Oc+R-A+R-Oc.litmus ├── C-LB-GRW+R-A+R-Oc+R-Oc+OB-OB.litmus ├── C-LB-GRW+R-A+R-Oc+R-Oc+R-Oc.litmus ├── C-LB-GRW+R-A+R-Oc+R-Oc.litmus ├── C-LB-GRW+R-A+R-Oc.litmus ├── C-LB-GRW+R-A.litmus ├── C-LB-GRW+R-Dd+OB-O+OB-O+OB-OB.litmus ├── C-LB-GRW+R-Dd+OB-O+OB-O+R-A.litmus ├── C-LB-GRW+R-Dd+OB-O+OB-O+R-Oc.litmus ├── C-LB-GRW+R-Dd+OB-O+OB-OB.litmus ├── C-LB-GRW+R-Dd+OB-O+R-A+OB-OB.litmus ├── C-LB-GRW+R-Dd+OB-O+R-A+R-A.litmus ├── C-LB-GRW+R-Dd+OB-O+R-A+R-Oc.litmus ├── C-LB-GRW+R-Dd+OB-O+R-A.litmus ├── C-LB-GRW+R-Dd+OB-O+R-Dd+OB-OB.litmus ├── C-LB-GRW+R-Dd+OB-O+R-Dd+R-A.litmus ├── C-LB-GRW+R-Dd+OB-O+R-Dd+R-Oc.litmus ├── C-LB-GRW+R-Dd+OB-O+R-Oc+OB-OB.litmus ├── C-LB-GRW+R-Dd+OB-O+R-Oc+R-A.litmus ├── C-LB-GRW+R-Dd+OB-O+R-Oc+R-Oc.litmus ├── C-LB-GRW+R-Dd+OB-O+R-Oc.litmus ├── C-LB-GRW+R-Dd+OB-OB.litmus ├── C-LB-GRW+R-Dd+R-A+OB-O+OB-OB.litmus ├── C-LB-GRW+R-Dd+R-A+OB-O+R-A.litmus ├── C-LB-GRW+R-Dd+R-A+OB-O+R-Oc.litmus ├── C-LB-GRW+R-Dd+R-A+OB-OB.litmus ├── C-LB-GRW+R-Dd+R-A+R-A+OB-OB.litmus ├── C-LB-GRW+R-Dd+R-A+R-A+R-A.litmus ├── C-LB-GRW+R-Dd+R-A+R-A+R-Oc.litmus ├── C-LB-GRW+R-Dd+R-A+R-A.litmus ├── C-LB-GRW+R-Dd+R-A+R-Dd+R-A.litmus ├── C-LB-GRW+R-Dd+R-A+R-Oc+OB-OB.litmus ├── C-LB-GRW+R-Dd+R-A+R-Oc+R-A.litmus ├── C-LB-GRW+R-Dd+R-A+R-Oc+R-Oc.litmus ├── C-LB-GRW+R-Dd+R-A+R-Oc.litmus ├── C-LB-GRW+R-Dd+R-A.litmus ├── C-LB-GRW+R-Dd+R-Dd+OB-O+OB-OB.litmus ├── C-LB-GRW+R-Dd+R-Dd+OB-O+R-A.litmus ├── C-LB-GRW+R-Dd+R-Dd+OB-O+R-Oc.litmus ├── C-LB-GRW+R-Dd+R-Dd+OB-OB.litmus ├── C-LB-GRW+R-Dd+R-Dd+R-A+OB-OB.litmus ├── C-LB-GRW+R-Dd+R-Dd+R-A+R-A.litmus ├── C-LB-GRW+R-Dd+R-Dd+R-A+R-Oc.litmus ├── C-LB-GRW+R-Dd+R-Dd+R-A.litmus ├── C-LB-GRW+R-Dd+R-Dd+R-Dd+OB-OB.litmus ├── C-LB-GRW+R-Dd+R-Dd+R-Dd+R-A.litmus ├── C-LB-GRW+R-Dd+R-Dd+R-Dd+R-Dd.litmus ├── C-LB-GRW+R-Dd+R-Dd+R-Dd+R-Oc.litmus ├── C-LB-GRW+R-Dd+R-Dd+R-Dd.litmus ├── C-LB-GRW+R-Dd+R-Dd+R-Oc+OB-OB.litmus ├── C-LB-GRW+R-Dd+R-Dd+R-Oc+R-A.litmus ├── C-LB-GRW+R-Dd+R-Dd+R-Oc+R-Oc.litmus ├── C-LB-GRW+R-Dd+R-Dd+R-Oc.litmus ├── C-LB-GRW+R-Dd+R-Dd.litmus ├── C-LB-GRW+R-Dd+R-Oc+OB-O+OB-OB.litmus ├── C-LB-GRW+R-Dd+R-Oc+OB-O+R-A.litmus ├── C-LB-GRW+R-Dd+R-Oc+OB-O+R-Oc.litmus ├── C-LB-GRW+R-Dd+R-Oc+OB-OB.litmus ├── C-LB-GRW+R-Dd+R-Oc+R-A+OB-OB.litmus ├── C-LB-GRW+R-Dd+R-Oc+R-A+R-A.litmus ├── C-LB-GRW+R-Dd+R-Oc+R-A+R-Oc.litmus ├── C-LB-GRW+R-Dd+R-Oc+R-A.litmus ├── C-LB-GRW+R-Dd+R-Oc+R-Dd+R-A.litmus ├── C-LB-GRW+R-Dd+R-Oc+R-Dd+R-Oc.litmus ├── C-LB-GRW+R-Dd+R-Oc+R-Oc+OB-OB.litmus ├── C-LB-GRW+R-Dd+R-Oc+R-Oc+R-A.litmus ├── C-LB-GRW+R-Dd+R-Oc+R-Oc+R-Oc.litmus ├── C-LB-GRW+R-Dd+R-Oc+R-Oc.litmus ├── C-LB-GRW+R-Dd+R-Oc.litmus ├── C-LB-GRW+R-Dd.litmus ├── C-LB-GRW+R-Oc+OB-O+OB-O+OB-OB.litmus ├── C-LB-GRW+R-Oc+OB-O+OB-OB.litmus ├── C-LB-GRW+R-Oc+OB-O+R-Oc+OB-OB.litmus ├── C-LB-GRW+R-Oc+OB-OB.litmus ├── C-LB-GRW+R-Oc+R-Oc+OB-O+OB-OB.litmus ├── C-LB-GRW+R-Oc+R-Oc+OB-OB.litmus ├── C-LB-GRW+R-Oc+R-Oc+R-Oc+OB-OB.litmus ├── C-LB-GRW+R-Oc+R-Oc+R-Oc+R-Oc.litmus ├── C-LB-GRW+R-Oc+R-Oc+R-Oc.litmus ├── C-LB-GRW+R-Oc+R-Oc.litmus ├── C-LB-GRW+R-Oc.litmus ├── C-LB-GWR+OB-O+OB-O+OB-O+OB-OB.litmus ├── C-LB-GWR+OB-O+OB-O+OB-OB.litmus ├── C-LB-GWR+OB-O+OB-OB.litmus ├── C-LB-GWR+OB-OB.litmus ├── C-LB-GWR+R-A+O-Dd.litmus ├── C-LB-GWR+R-A+OB-Dd.litmus ├── C-LB-GWR+R-A+OB-O+OB-O+OB-OB.litmus ├── C-LB-GWR+R-A+OB-O+OB-O+R-Oc.litmus ├── C-LB-GWR+R-A+OB-O+OB-OB.litmus ├── C-LB-GWR+R-A+OB-O+R-A+OB-OB.litmus ├── C-LB-GWR+R-A+OB-O+R-A+R-Oc.litmus ├── C-LB-GWR+R-A+OB-O+R-Oc+OB-OB.litmus ├── C-LB-GWR+R-A+OB-O+R-Oc+R-Oc.litmus ├── C-LB-GWR+R-A+OB-O+R-Oc.litmus ├── C-LB-GWR+R-A+OB-OB.litmus ├── C-LB-GWR+R-A+R-A+OB-O+OB-OB.litmus ├── C-LB-GWR+R-A+R-A+OB-O+R-Oc.litmus ├── C-LB-GWR+R-A+R-A+OB-OB.litmus ├── C-LB-GWR+R-A+R-A+R-A+OB-OB.litmus ├── C-LB-GWR+R-A+R-A+R-A+R-A.litmus ├── C-LB-GWR+R-A+R-A+R-A+R-Oc.litmus ├── C-LB-GWR+R-A+R-A+R-A.litmus ├── C-LB-GWR+R-A+R-A+R-Oc+OB-OB.litmus ├── C-LB-GWR+R-A+R-A+R-Oc+R-Oc.litmus ├── C-LB-GWR+R-A+R-A+R-Oc.litmus ├── C-LB-GWR+R-A+R-A.litmus ├── C-LB-GWR+R-A+R-Dd.litmus ├── C-LB-GWR+R-A+R-Oc+OB-O+OB-OB.litmus ├── C-LB-GWR+R-A+R-Oc+OB-O+R-Oc.litmus ├── C-LB-GWR+R-A+R-Oc+OB-OB.litmus ├── C-LB-GWR+R-A+R-Oc+R-A+R-Oc.litmus ├── C-LB-GWR+R-A+R-Oc+R-Oc+OB-OB.litmus ├── C-LB-GWR+R-A+R-Oc+R-Oc+R-Oc.litmus ├── C-LB-GWR+R-A+R-Oc+R-Oc.litmus ├── C-LB-GWR+R-A+R-Oc.litmus ├── C-LB-GWR+R-A.litmus ├── C-LB-GWR+R-Dd+OB-O+OB-O+OB-OB.litmus ├── C-LB-GWR+R-Dd+OB-O+OB-O+R-A.litmus ├── C-LB-GWR+R-Dd+OB-O+OB-O+R-Oc.litmus ├── C-LB-GWR+R-Dd+OB-O+OB-OB.litmus ├── C-LB-GWR+R-Dd+OB-O+R-A+OB-OB.litmus ├── C-LB-GWR+R-Dd+OB-O+R-A+R-A.litmus ├── C-LB-GWR+R-Dd+OB-O+R-A+R-Oc.litmus ├── C-LB-GWR+R-Dd+OB-O+R-A.litmus ├── C-LB-GWR+R-Dd+OB-O+R-Dd+OB-OB.litmus ├── C-LB-GWR+R-Dd+OB-O+R-Dd+R-A.litmus ├── C-LB-GWR+R-Dd+OB-O+R-Dd+R-Oc.litmus ├── C-LB-GWR+R-Dd+OB-O+R-Oc+OB-OB.litmus ├── C-LB-GWR+R-Dd+OB-O+R-Oc+R-A.litmus ├── C-LB-GWR+R-Dd+OB-O+R-Oc+R-Oc.litmus ├── C-LB-GWR+R-Dd+OB-O+R-Oc.litmus ├── C-LB-GWR+R-Dd+OB-OB.litmus ├── C-LB-GWR+R-Dd+R-A+OB-O+OB-OB.litmus ├── C-LB-GWR+R-Dd+R-A+OB-O+R-A.litmus ├── C-LB-GWR+R-Dd+R-A+OB-O+R-Oc.litmus ├── C-LB-GWR+R-Dd+R-A+OB-OB.litmus ├── C-LB-GWR+R-Dd+R-A+R-A+OB-OB.litmus ├── C-LB-GWR+R-Dd+R-A+R-A+R-A.litmus ├── C-LB-GWR+R-Dd+R-A+R-A+R-Oc.litmus ├── C-LB-GWR+R-Dd+R-A+R-A.litmus ├── C-LB-GWR+R-Dd+R-A+R-Dd+R-A.litmus ├── C-LB-GWR+R-Dd+R-A+R-Oc+OB-OB.litmus ├── C-LB-GWR+R-Dd+R-A+R-Oc+R-A.litmus ├── C-LB-GWR+R-Dd+R-A+R-Oc+R-Oc.litmus ├── C-LB-GWR+R-Dd+R-A+R-Oc.litmus ├── C-LB-GWR+R-Dd+R-A.litmus ├── C-LB-GWR+R-Dd+R-Dd+OB-O+OB-OB.litmus ├── C-LB-GWR+R-Dd+R-Dd+OB-O+R-A.litmus ├── C-LB-GWR+R-Dd+R-Dd+OB-O+R-Oc.litmus ├── C-LB-GWR+R-Dd+R-Dd+OB-OB.litmus ├── C-LB-GWR+R-Dd+R-Dd+R-A+OB-OB.litmus ├── C-LB-GWR+R-Dd+R-Dd+R-A+R-A.litmus ├── C-LB-GWR+R-Dd+R-Dd+R-A+R-Oc.litmus ├── C-LB-GWR+R-Dd+R-Dd+R-A.litmus ├── C-LB-GWR+R-Dd+R-Dd+R-Dd+OB-OB.litmus ├── C-LB-GWR+R-Dd+R-Dd+R-Dd+R-A.litmus ├── C-LB-GWR+R-Dd+R-Dd+R-Dd+R-Dd.litmus ├── C-LB-GWR+R-Dd+R-Dd+R-Dd+R-Oc.litmus ├── C-LB-GWR+R-Dd+R-Dd+R-Dd.litmus ├── C-LB-GWR+R-Dd+R-Dd+R-Oc+OB-OB.litmus ├── C-LB-GWR+R-Dd+R-Dd+R-Oc+R-A.litmus ├── C-LB-GWR+R-Dd+R-Dd+R-Oc+R-Oc.litmus ├── C-LB-GWR+R-Dd+R-Dd+R-Oc.litmus ├── C-LB-GWR+R-Dd+R-Dd.litmus ├── C-LB-GWR+R-Dd+R-Oc+OB-O+OB-OB.litmus ├── C-LB-GWR+R-Dd+R-Oc+OB-O+R-A.litmus ├── C-LB-GWR+R-Dd+R-Oc+OB-O+R-Oc.litmus ├── C-LB-GWR+R-Dd+R-Oc+OB-OB.litmus ├── C-LB-GWR+R-Dd+R-Oc+R-A+OB-OB.litmus ├── C-LB-GWR+R-Dd+R-Oc+R-A+R-A.litmus ├── C-LB-GWR+R-Dd+R-Oc+R-A+R-Oc.litmus ├── C-LB-GWR+R-Dd+R-Oc+R-A.litmus ├── C-LB-GWR+R-Dd+R-Oc+R-Dd+R-A.litmus ├── C-LB-GWR+R-Dd+R-Oc+R-Dd+R-Oc.litmus ├── C-LB-GWR+R-Dd+R-Oc+R-Oc+OB-OB.litmus ├── C-LB-GWR+R-Dd+R-Oc+R-Oc+R-A.litmus ├── C-LB-GWR+R-Dd+R-Oc+R-Oc+R-Oc.litmus ├── C-LB-GWR+R-Dd+R-Oc+R-Oc.litmus ├── C-LB-GWR+R-Dd+R-Oc.litmus ├── C-LB-GWR+R-Dd.litmus ├── C-LB-GWR+R-Oc+OB-O+OB-O+OB-OB.litmus ├── C-LB-GWR+R-Oc+OB-O+OB-OB.litmus ├── C-LB-GWR+R-Oc+OB-O+R-Oc+OB-OB.litmus ├── C-LB-GWR+R-Oc+OB-OB.litmus ├── C-LB-GWR+R-Oc+R-Oc+OB-O+OB-OB.litmus ├── C-LB-GWR+R-Oc+R-Oc+OB-OB.litmus ├── C-LB-GWR+R-Oc+R-Oc+R-Oc+OB-OB.litmus ├── C-LB-GWR+R-Oc+R-Oc+R-Oc+R-Oc.litmus ├── C-LB-GWR+R-Oc+R-Oc+R-Oc.litmus ├── C-LB-GWR+R-Oc+R-Oc.litmus ├── C-LB-GWR+R-Oc.litmus ├── C-LB-GWW+OB-O+OB-O+OB-O+OB-OB.litmus ├── C-LB-GWW+OB-O+OB-O+OB-OB.litmus ├── C-LB-GWW+OB-O+OB-OB.litmus ├── C-LB-GWW+OB-OB.litmus ├── C-LB-GWW+R-A+O-Dd.litmus ├── C-LB-GWW+R-A+OB-Dd.litmus ├── C-LB-GWW+R-A+OB-O+OB-O+OB-OB.litmus ├── C-LB-GWW+R-A+OB-O+OB-O+R-Oc.litmus ├── C-LB-GWW+R-A+OB-O+OB-OB.litmus ├── C-LB-GWW+R-A+OB-O+R-A+OB-OB.litmus ├── C-LB-GWW+R-A+OB-O+R-A+R-Oc.litmus ├── C-LB-GWW+R-A+OB-O+R-Oc+OB-OB.litmus ├── C-LB-GWW+R-A+OB-O+R-Oc+R-Oc.litmus ├── C-LB-GWW+R-A+OB-O+R-Oc.litmus ├── C-LB-GWW+R-A+OB-OB.litmus ├── C-LB-GWW+R-A+R-A+OB-O+OB-OB.litmus ├── C-LB-GWW+R-A+R-A+OB-O+R-Oc.litmus ├── C-LB-GWW+R-A+R-A+OB-OB.litmus ├── C-LB-GWW+R-A+R-A+R-A+OB-OB.litmus ├── C-LB-GWW+R-A+R-A+R-A+R-A.litmus ├── C-LB-GWW+R-A+R-A+R-A+R-Oc.litmus ├── C-LB-GWW+R-A+R-A+R-A.litmus ├── C-LB-GWW+R-A+R-A+R-Oc+OB-OB.litmus ├── C-LB-GWW+R-A+R-A+R-Oc+R-Oc.litmus ├── C-LB-GWW+R-A+R-A+R-Oc.litmus ├── C-LB-GWW+R-A+R-A.litmus ├── C-LB-GWW+R-A+R-Dd.litmus ├── C-LB-GWW+R-A+R-Oc+OB-O+OB-OB.litmus ├── C-LB-GWW+R-A+R-Oc+OB-O+R-Oc.litmus ├── C-LB-GWW+R-A+R-Oc+OB-OB.litmus ├── C-LB-GWW+R-A+R-Oc+R-A+R-Oc.litmus ├── C-LB-GWW+R-A+R-Oc+R-Oc+OB-OB.litmus ├── C-LB-GWW+R-A+R-Oc+R-Oc+R-Oc.litmus ├── C-LB-GWW+R-A+R-Oc+R-Oc.litmus ├── C-LB-GWW+R-A+R-Oc.litmus ├── C-LB-GWW+R-A.litmus ├── C-LB-GWW+R-Dd+OB-O+OB-O+OB-OB.litmus ├── C-LB-GWW+R-Dd+OB-O+OB-O+R-A.litmus ├── C-LB-GWW+R-Dd+OB-O+OB-O+R-Oc.litmus ├── C-LB-GWW+R-Dd+OB-O+OB-OB.litmus ├── C-LB-GWW+R-Dd+OB-O+R-A+OB-OB.litmus ├── C-LB-GWW+R-Dd+OB-O+R-A+R-A.litmus ├── C-LB-GWW+R-Dd+OB-O+R-A+R-Oc.litmus ├── C-LB-GWW+R-Dd+OB-O+R-A.litmus ├── C-LB-GWW+R-Dd+OB-O+R-Dd+OB-OB.litmus ├── C-LB-GWW+R-Dd+OB-O+R-Dd+R-A.litmus ├── C-LB-GWW+R-Dd+OB-O+R-Dd+R-Oc.litmus ├── C-LB-GWW+R-Dd+OB-O+R-Oc+OB-OB.litmus ├── C-LB-GWW+R-Dd+OB-O+R-Oc+R-A.litmus ├── C-LB-GWW+R-Dd+OB-O+R-Oc+R-Oc.litmus ├── C-LB-GWW+R-Dd+OB-O+R-Oc.litmus ├── C-LB-GWW+R-Dd+OB-OB.litmus ├── C-LB-GWW+R-Dd+R-A+OB-O+OB-OB.litmus ├── C-LB-GWW+R-Dd+R-A+OB-O+R-A.litmus ├── C-LB-GWW+R-Dd+R-A+OB-O+R-Oc.litmus ├── C-LB-GWW+R-Dd+R-A+OB-OB.litmus ├── C-LB-GWW+R-Dd+R-A+R-A+OB-OB.litmus ├── C-LB-GWW+R-Dd+R-A+R-A+R-A.litmus ├── C-LB-GWW+R-Dd+R-A+R-A+R-Oc.litmus ├── C-LB-GWW+R-Dd+R-A+R-A.litmus ├── C-LB-GWW+R-Dd+R-A+R-Dd+R-A.litmus ├── C-LB-GWW+R-Dd+R-A+R-Oc+OB-OB.litmus ├── C-LB-GWW+R-Dd+R-A+R-Oc+R-A.litmus ├── C-LB-GWW+R-Dd+R-A+R-Oc+R-Oc.litmus ├── C-LB-GWW+R-Dd+R-A+R-Oc.litmus ├── C-LB-GWW+R-Dd+R-A.litmus ├── C-LB-GWW+R-Dd+R-Dd+OB-O+OB-OB.litmus ├── C-LB-GWW+R-Dd+R-Dd+OB-O+R-A.litmus ├── C-LB-GWW+R-Dd+R-Dd+OB-O+R-Oc.litmus ├── C-LB-GWW+R-Dd+R-Dd+OB-OB.litmus ├── C-LB-GWW+R-Dd+R-Dd+R-A+OB-OB.litmus ├── C-LB-GWW+R-Dd+R-Dd+R-A+R-A.litmus ├── C-LB-GWW+R-Dd+R-Dd+R-A+R-Oc.litmus ├── C-LB-GWW+R-Dd+R-Dd+R-A.litmus ├── C-LB-GWW+R-Dd+R-Dd+R-Dd+OB-OB.litmus ├── C-LB-GWW+R-Dd+R-Dd+R-Dd+R-A.litmus ├── C-LB-GWW+R-Dd+R-Dd+R-Dd+R-Dd.litmus ├── C-LB-GWW+R-Dd+R-Dd+R-Dd+R-Oc.litmus ├── C-LB-GWW+R-Dd+R-Dd+R-Dd.litmus ├── C-LB-GWW+R-Dd+R-Dd+R-Oc+OB-OB.litmus ├── C-LB-GWW+R-Dd+R-Dd+R-Oc+R-A.litmus ├── C-LB-GWW+R-Dd+R-Dd+R-Oc+R-Oc.litmus ├── C-LB-GWW+R-Dd+R-Dd+R-Oc.litmus ├── C-LB-GWW+R-Dd+R-Dd.litmus ├── C-LB-GWW+R-Dd+R-Oc+OB-O+OB-OB.litmus ├── C-LB-GWW+R-Dd+R-Oc+OB-O+R-A.litmus ├── C-LB-GWW+R-Dd+R-Oc+OB-O+R-Oc.litmus ├── C-LB-GWW+R-Dd+R-Oc+OB-OB.litmus ├── C-LB-GWW+R-Dd+R-Oc+R-A+OB-OB.litmus ├── C-LB-GWW+R-Dd+R-Oc+R-A+R-A.litmus ├── C-LB-GWW+R-Dd+R-Oc+R-A+R-Oc.litmus ├── C-LB-GWW+R-Dd+R-Oc+R-A.litmus ├── C-LB-GWW+R-Dd+R-Oc+R-Dd+R-A.litmus ├── C-LB-GWW+R-Dd+R-Oc+R-Dd+R-Oc.litmus ├── C-LB-GWW+R-Dd+R-Oc+R-Oc+OB-OB.litmus ├── C-LB-GWW+R-Dd+R-Oc+R-Oc+R-A.litmus ├── C-LB-GWW+R-Dd+R-Oc+R-Oc+R-Oc.litmus ├── C-LB-GWW+R-Dd+R-Oc+R-Oc.litmus ├── C-LB-GWW+R-Dd+R-Oc.litmus ├── C-LB-GWW+R-Dd.litmus ├── C-LB-GWW+R-Oc+OB-O+OB-O+OB-OB.litmus ├── C-LB-GWW+R-Oc+OB-O+OB-OB.litmus ├── C-LB-GWW+R-Oc+OB-O+R-Oc+OB-OB.litmus ├── C-LB-GWW+R-Oc+OB-OB.litmus ├── C-LB-GWW+R-Oc+R-Oc+OB-O+OB-OB.litmus ├── C-LB-GWW+R-Oc+R-Oc+OB-OB.litmus ├── C-LB-GWW+R-Oc+R-Oc+R-Oc+OB-OB.litmus ├── C-LB-GWW+R-Oc+R-Oc+R-Oc+R-Oc.litmus ├── C-LB-GWW+R-Oc+R-Oc+R-Oc.litmus ├── C-LB-GWW+R-Oc+R-Oc.litmus ├── C-LB-GWW+R-Oc.litmus ├── C-LB-LRR+OB-O+OB-O+OB-O+OB-OB.litmus ├── C-LB-LRR+OB-O+OB-O+OB-OB.litmus ├── C-LB-LRR+OB-O+OB-OB.litmus ├── C-LB-LRR+R-A+O-Dd.litmus ├── C-LB-LRR+R-A+OB-Dd.litmus ├── C-LB-LRR+R-A+OB-O+OB-O+OB-OB.litmus ├── C-LB-LRR+R-A+OB-O+OB-O+R-OC.litmus ├── C-LB-LRR+R-A+OB-O+OB-O+R-Oc.litmus ├── C-LB-LRR+R-A+OB-O+OB-OB.litmus ├── C-LB-LRR+R-A+OB-O+R-A+OB-OB.litmus ├── C-LB-LRR+R-A+OB-O+R-A+R-OC.litmus ├── C-LB-LRR+R-A+OB-O+R-A+R-Oc.litmus ├── C-LB-LRR+R-A+OB-O+R-OC.litmus ├── C-LB-LRR+R-A+OB-O+R-Oc+OB-OB.litmus ├── C-LB-LRR+R-A+OB-O+R-Oc+R-OC.litmus ├── C-LB-LRR+R-A+OB-O+R-Oc+R-Oc.litmus ├── C-LB-LRR+R-A+OB-O+R-Oc.litmus ├── C-LB-LRR+R-A+OB-OB.litmus ├── C-LB-LRR+R-A+R-A+OB-O+OB-OB.litmus ├── C-LB-LRR+R-A+R-A+OB-O+R-OC.litmus ├── C-LB-LRR+R-A+R-A+OB-O+R-Oc.litmus ├── C-LB-LRR+R-A+R-A+OB-OB.litmus ├── C-LB-LRR+R-A+R-A+R-A+OB-OB.litmus ├── C-LB-LRR+R-A+R-A+R-A+R-A.litmus ├── C-LB-LRR+R-A+R-A+R-A+R-OC.litmus ├── C-LB-LRR+R-A+R-A+R-A+R-Oc.litmus ├── C-LB-LRR+R-A+R-A+R-A.litmus ├── C-LB-LRR+R-A+R-A+R-OC.litmus ├── C-LB-LRR+R-A+R-A+R-Oc+OB-OB.litmus ├── C-LB-LRR+R-A+R-A+R-Oc+R-OC.litmus ├── C-LB-LRR+R-A+R-A+R-Oc+R-Oc.litmus ├── C-LB-LRR+R-A+R-A+R-Oc.litmus ├── C-LB-LRR+R-A+R-A.litmus ├── C-LB-LRR+R-A+R-Dd.litmus ├── C-LB-LRR+R-A+R-OC.litmus ├── C-LB-LRR+R-A+R-Oc+OB-O+OB-OB.litmus ├── C-LB-LRR+R-A+R-Oc+OB-O+R-OC.litmus ├── C-LB-LRR+R-A+R-Oc+OB-O+R-Oc.litmus ├── C-LB-LRR+R-A+R-Oc+OB-OB.litmus ├── C-LB-LRR+R-A+R-Oc+R-A+R-OC.litmus ├── C-LB-LRR+R-A+R-Oc+R-A+R-Oc.litmus ├── C-LB-LRR+R-A+R-Oc+R-OC.litmus ├── C-LB-LRR+R-A+R-Oc+R-Oc+OB-OB.litmus ├── C-LB-LRR+R-A+R-Oc+R-Oc+R-OC.litmus ├── C-LB-LRR+R-A+R-Oc+R-Oc+R-Oc.litmus ├── C-LB-LRR+R-A+R-Oc+R-Oc.litmus ├── C-LB-LRR+R-A+R-Oc.litmus ├── C-LB-LRR+R-Dd+OB-O+OB-O+OB-OB.litmus ├── C-LB-LRR+R-Dd+OB-O+OB-O+R-A.litmus ├── C-LB-LRR+R-Dd+OB-O+OB-O+R-OC.litmus ├── C-LB-LRR+R-Dd+OB-O+OB-O+R-Oc.litmus ├── C-LB-LRR+R-Dd+OB-O+OB-OB.litmus ├── C-LB-LRR+R-Dd+OB-O+R-A+OB-OB.litmus ├── C-LB-LRR+R-Dd+OB-O+R-A+R-A.litmus ├── C-LB-LRR+R-Dd+OB-O+R-A+R-OC.litmus ├── C-LB-LRR+R-Dd+OB-O+R-A+R-Oc.litmus ├── C-LB-LRR+R-Dd+OB-O+R-A.litmus ├── C-LB-LRR+R-Dd+OB-O+R-Dd+OB-OB.litmus ├── C-LB-LRR+R-Dd+OB-O+R-Dd+R-A.litmus ├── C-LB-LRR+R-Dd+OB-O+R-Dd+R-OC.litmus ├── C-LB-LRR+R-Dd+OB-O+R-Dd+R-Oc.litmus ├── C-LB-LRR+R-Dd+OB-O+R-OC.litmus ├── C-LB-LRR+R-Dd+OB-O+R-Oc+OB-OB.litmus ├── C-LB-LRR+R-Dd+OB-O+R-Oc+R-A.litmus ├── C-LB-LRR+R-Dd+OB-O+R-Oc+R-OC.litmus ├── C-LB-LRR+R-Dd+OB-O+R-Oc+R-Oc.litmus ├── C-LB-LRR+R-Dd+OB-O+R-Oc.litmus ├── C-LB-LRR+R-Dd+OB-OB.litmus ├── C-LB-LRR+R-Dd+R-A+OB-O+OB-OB.litmus ├── C-LB-LRR+R-Dd+R-A+OB-O+R-A.litmus ├── C-LB-LRR+R-Dd+R-A+OB-O+R-OC.litmus ├── C-LB-LRR+R-Dd+R-A+OB-O+R-Oc.litmus ├── C-LB-LRR+R-Dd+R-A+OB-OB.litmus ├── C-LB-LRR+R-Dd+R-A+R-A+OB-OB.litmus ├── C-LB-LRR+R-Dd+R-A+R-A+R-A.litmus ├── C-LB-LRR+R-Dd+R-A+R-A+R-OC.litmus ├── C-LB-LRR+R-Dd+R-A+R-A+R-Oc.litmus ├── C-LB-LRR+R-Dd+R-A+R-A.litmus ├── C-LB-LRR+R-Dd+R-A+R-Dd+R-A.litmus ├── C-LB-LRR+R-Dd+R-A+R-OC.litmus ├── C-LB-LRR+R-Dd+R-A+R-Oc+OB-OB.litmus ├── C-LB-LRR+R-Dd+R-A+R-Oc+R-A.litmus ├── C-LB-LRR+R-Dd+R-A+R-Oc+R-OC.litmus ├── C-LB-LRR+R-Dd+R-A+R-Oc+R-Oc.litmus ├── C-LB-LRR+R-Dd+R-A+R-Oc.litmus ├── C-LB-LRR+R-Dd+R-A.litmus ├── C-LB-LRR+R-Dd+R-Dd+OB-O+OB-OB.litmus ├── C-LB-LRR+R-Dd+R-Dd+OB-O+R-A.litmus ├── C-LB-LRR+R-Dd+R-Dd+OB-O+R-OC.litmus ├── C-LB-LRR+R-Dd+R-Dd+OB-O+R-Oc.litmus ├── C-LB-LRR+R-Dd+R-Dd+OB-OB.litmus ├── C-LB-LRR+R-Dd+R-Dd+R-A+OB-OB.litmus ├── C-LB-LRR+R-Dd+R-Dd+R-A+R-A.litmus ├── C-LB-LRR+R-Dd+R-Dd+R-A+R-OC.litmus ├── C-LB-LRR+R-Dd+R-Dd+R-A+R-Oc.litmus ├── C-LB-LRR+R-Dd+R-Dd+R-A.litmus ├── C-LB-LRR+R-Dd+R-Dd+R-Dd+OB-OB.litmus ├── C-LB-LRR+R-Dd+R-Dd+R-Dd+R-A.litmus ├── C-LB-LRR+R-Dd+R-Dd+R-Dd+R-Dd.litmus ├── C-LB-LRR+R-Dd+R-Dd+R-Dd+R-OC.litmus ├── C-LB-LRR+R-Dd+R-Dd+R-Dd+R-Oc.litmus ├── C-LB-LRR+R-Dd+R-Dd+R-Dd+R-Od.litmus ├── C-LB-LRR+R-Dd+R-Dd+R-Dd.litmus ├── C-LB-LRR+R-Dd+R-Dd+R-OC.litmus ├── C-LB-LRR+R-Dd+R-Dd+R-Oc+OB-OB.litmus ├── C-LB-LRR+R-Dd+R-Dd+R-Oc+R-A.litmus ├── C-LB-LRR+R-Dd+R-Dd+R-Oc+R-OC.litmus ├── C-LB-LRR+R-Dd+R-Dd+R-Oc+R-Oc.litmus ├── C-LB-LRR+R-Dd+R-Dd+R-Oc.litmus ├── C-LB-LRR+R-Dd+R-Dd+R-Od.litmus ├── C-LB-LRR+R-Dd+R-Dd.litmus ├── C-LB-LRR+R-Dd+R-OC.litmus ├── C-LB-LRR+R-Dd+R-Oc+OB-O+OB-OB.litmus ├── C-LB-LRR+R-Dd+R-Oc+OB-O+R-A.litmus ├── C-LB-LRR+R-Dd+R-Oc+OB-O+R-OC.litmus ├── C-LB-LRR+R-Dd+R-Oc+OB-O+R-Oc.litmus ├── C-LB-LRR+R-Dd+R-Oc+OB-OB.litmus ├── C-LB-LRR+R-Dd+R-Oc+R-A+OB-OB.litmus ├── C-LB-LRR+R-Dd+R-Oc+R-A+R-A.litmus ├── C-LB-LRR+R-Dd+R-Oc+R-A+R-OC.litmus ├── C-LB-LRR+R-Dd+R-Oc+R-A+R-Oc.litmus ├── C-LB-LRR+R-Dd+R-Oc+R-A.litmus ├── C-LB-LRR+R-Dd+R-Oc+R-Dd+R-A.litmus ├── C-LB-LRR+R-Dd+R-Oc+R-Dd+R-OC.litmus ├── C-LB-LRR+R-Dd+R-Oc+R-Dd+R-Oc.litmus ├── C-LB-LRR+R-Dd+R-Oc+R-OC.litmus ├── C-LB-LRR+R-Dd+R-Oc+R-Oc+OB-OB.litmus ├── C-LB-LRR+R-Dd+R-Oc+R-Oc+R-A.litmus ├── C-LB-LRR+R-Dd+R-Oc+R-Oc+R-OC.litmus ├── C-LB-LRR+R-Dd+R-Oc+R-Oc+R-Oc.litmus ├── C-LB-LRR+R-Dd+R-Oc+R-Oc.litmus ├── C-LB-LRR+R-Dd+R-Oc.litmus ├── C-LB-LRR+R-Dd+R-Od.litmus ├── C-LB-LRR+R-Oc+OB-O+OB-O+OB-OB.litmus ├── C-LB-LRR+R-Oc+OB-O+OB-OB.litmus ├── C-LB-LRR+R-Oc+OB-O+R-Oc+OB-OB.litmus ├── C-LB-LRR+R-Oc+OB-OB.litmus ├── C-LB-LRR+R-Oc+R-OC.litmus ├── C-LB-LRR+R-Oc+R-Oc+OB-O+OB-OB.litmus ├── C-LB-LRR+R-Oc+R-Oc+OB-OB.litmus ├── C-LB-LRR+R-Oc+R-Oc+R-OC.litmus ├── C-LB-LRR+R-Oc+R-Oc+R-Oc+OB-OB.litmus ├── C-LB-LRR+R-Oc+R-Oc+R-Oc+R-OC.litmus ├── C-LB-LRR+R-Oc+R-Oc+R-Oc+R-Oc.litmus ├── C-LB-LRR+R-Oc+R-Oc+R-Oc.litmus ├── C-LB-LRR+R-Oc+R-Oc.litmus ├── C-LB-LRW+O-O+OB-O+OB-O+OB-OB.litmus ├── C-LB-LRW+O-O+OB-O+OB-OB.litmus ├── C-LB-LRW+OB-Dv.litmus ├── C-LB-LRW+OB-O+OB-O+OB-O+OB-OB.litmus ├── C-LB-LRW+OB-O+OB-O+OB-OB.litmus ├── C-LB-LRW+OB-O+OB-OB.litmus ├── C-LB-LRW+OB-Ov.litmus ├── C-LB-LRW+R-A+O-Dd.litmus ├── C-LB-LRW+R-A+O-O+OB-O+OB-OB.litmus ├── C-LB-LRW+R-A+O-O+OB-O+R-Oc.litmus ├── C-LB-LRW+R-A+OB-Dd.litmus ├── C-LB-LRW+R-A+OB-O+OB-O+OB-OB.litmus ├── C-LB-LRW+R-A+OB-O+OB-O+R-Oc.litmus ├── C-LB-LRW+R-A+OB-O+OB-O+R-Ok.litmus ├── C-LB-LRW+R-A+OB-O+OB-OB.litmus ├── C-LB-LRW+R-A+OB-O+R-A+OB-OB.litmus ├── C-LB-LRW+R-A+OB-O+R-A+R-Oc.litmus ├── C-LB-LRW+R-A+OB-O+R-A+R-Ok.litmus ├── C-LB-LRW+R-A+OB-O+R-OC+OB-OB.litmus ├── C-LB-LRW+R-A+OB-O+R-OC+R-Oc.litmus ├── C-LB-LRW+R-A+OB-O+R-Oc+OB-OB.litmus ├── C-LB-LRW+R-A+OB-O+R-Oc+R-Oc.litmus ├── C-LB-LRW+R-A+OB-O+R-Oc+R-Ok.litmus ├── C-LB-LRW+R-A+OB-O+R-Oc.litmus ├── C-LB-LRW+R-A+OB-O+R-Ok.litmus ├── C-LB-LRW+R-A+OB-OB.litmus ├── C-LB-LRW+R-A+R-A+OB-O+OB-OB.litmus ├── C-LB-LRW+R-A+R-A+OB-O+R-Oc.litmus ├── C-LB-LRW+R-A+R-A+OB-O+R-Ok.litmus ├── C-LB-LRW+R-A+R-A+OB-OB.litmus ├── C-LB-LRW+R-A+R-A+R-A+OB-OB.litmus ├── C-LB-LRW+R-A+R-A+R-A+R-A.litmus ├── C-LB-LRW+R-A+R-A+R-A+R-Oc.litmus ├── C-LB-LRW+R-A+R-A+R-A+R-Ok.litmus ├── C-LB-LRW+R-A+R-A+R-A+RQ-A.litmus ├── C-LB-LRW+R-A+R-A+R-A.litmus ├── C-LB-LRW+R-A+R-A+R-OC+OB-OB.litmus ├── C-LB-LRW+R-A+R-A+R-OC+R-Oc.litmus ├── C-LB-LRW+R-A+R-A+R-Oc+OB-OB.litmus ├── C-LB-LRW+R-A+R-A+R-Oc+Oq-A.litmus ├── C-LB-LRW+R-A+R-A+R-Oc+R-Oc.litmus ├── C-LB-LRW+R-A+R-A+R-Oc+R-Ok.litmus ├── C-LB-LRW+R-A+R-A+R-Oc.litmus ├── C-LB-LRW+R-A+R-A+R-Ok.litmus ├── C-LB-LRW+R-A+R-A+RQ-A+R-A.litmus ├── C-LB-LRW+R-A+R-A+RQ-A.litmus ├── C-LB-LRW+R-A+R-A.litmus ├── C-LB-LRW+R-A+R-Dd.litmus ├── C-LB-LRW+R-A+R-OC+OB-O+OB-OB.litmus ├── C-LB-LRW+R-A+R-OC+OB-O+R-Oc.litmus ├── C-LB-LRW+R-A+R-OC+OB-OB.litmus ├── C-LB-LRW+R-A+R-OC+R-A+R-Oc.litmus ├── C-LB-LRW+R-A+R-OC+R-Oc+OB-OB.litmus ├── C-LB-LRW+R-A+R-OC+R-Oc+R-Oc.litmus ├── C-LB-LRW+R-A+R-OC+R-Oc.litmus ├── C-LB-LRW+R-A+R-Oc+OB-O+OB-OB.litmus ├── C-LB-LRW+R-A+R-Oc+OB-O+R-Oc.litmus ├── C-LB-LRW+R-A+R-Oc+OB-O+R-Ok.litmus ├── C-LB-LRW+R-A+R-Oc+OB-OB.litmus ├── C-LB-LRW+R-A+R-Oc+Oq-A.litmus ├── C-LB-LRW+R-A+R-Oc+R-A+R-Oc.litmus ├── C-LB-LRW+R-A+R-Oc+R-A+R-Ok.litmus ├── C-LB-LRW+R-A+R-Oc+R-Oc+OB-OB.litmus ├── C-LB-LRW+R-A+R-Oc+R-Oc+R-Oc.litmus ├── C-LB-LRW+R-A+R-Oc+R-Oc+R-Ok.litmus ├── C-LB-LRW+R-A+R-Oc+R-Oc.litmus ├── C-LB-LRW+R-A+R-Oc+R-Ok.litmus ├── C-LB-LRW+R-A+R-Oc.litmus ├── C-LB-LRW+R-A+R-Ok.litmus ├── C-LB-LRW+R-A+RQ-A+R-A.litmus ├── C-LB-LRW+R-A+RQ-A.litmus ├── C-LB-LRW+R-Dd+O-O+OB-O+OB-OB.litmus ├── C-LB-LRW+R-Dd+O-O+OB-O+R-A.litmus ├── C-LB-LRW+R-Dd+O-O+OB-O+R-Oc.litmus ├── C-LB-LRW+R-Dd+OB-O+OB-O+OB-OB.litmus ├── C-LB-LRW+R-Dd+OB-O+OB-O+R-A.litmus ├── C-LB-LRW+R-Dd+OB-O+OB-O+R-Oc.litmus ├── C-LB-LRW+R-Dd+OB-O+OB-O+R-Ok.litmus ├── C-LB-LRW+R-Dd+OB-O+OB-O+RQ-A.litmus ├── C-LB-LRW+R-Dd+OB-O+OB-OB.litmus ├── C-LB-LRW+R-Dd+OB-O+R-A+OB-OB.litmus ├── C-LB-LRW+R-Dd+OB-O+R-A+R-A.litmus ├── C-LB-LRW+R-Dd+OB-O+R-A+R-Oc.litmus ├── C-LB-LRW+R-Dd+OB-O+R-A+R-Ok.litmus ├── C-LB-LRW+R-Dd+OB-O+R-A+RQ-A.litmus ├── C-LB-LRW+R-Dd+OB-O+R-A.litmus ├── C-LB-LRW+R-Dd+OB-O+R-Dd+OB-OB.litmus ├── C-LB-LRW+R-Dd+OB-O+R-Dd+R-A.litmus ├── C-LB-LRW+R-Dd+OB-O+R-Dd+R-Oc.litmus ├── C-LB-LRW+R-Dd+OB-O+R-Dd+R-Ok.litmus ├── C-LB-LRW+R-Dd+OB-O+R-Dd+RQ-A.litmus ├── C-LB-LRW+R-Dd+OB-O+R-OC+OB-OB.litmus ├── C-LB-LRW+R-Dd+OB-O+R-OC+R-A.litmus ├── C-LB-LRW+R-Dd+OB-O+R-OC+R-Oc.litmus ├── C-LB-LRW+R-Dd+OB-O+R-Oc+OB-OB.litmus ├── C-LB-LRW+R-Dd+OB-O+R-Oc+Oq-A.litmus ├── C-LB-LRW+R-Dd+OB-O+R-Oc+R-A.litmus ├── C-LB-LRW+R-Dd+OB-O+R-Oc+R-Oc.litmus ├── C-LB-LRW+R-Dd+OB-O+R-Oc+R-Ok.litmus ├── C-LB-LRW+R-Dd+OB-O+R-Oc+RQ-A.litmus ├── C-LB-LRW+R-Dd+OB-O+R-Oc.litmus ├── C-LB-LRW+R-Dd+OB-O+R-Ok.litmus ├── C-LB-LRW+R-Dd+OB-O+RQ-A+R-A.litmus ├── C-LB-LRW+R-Dd+OB-O+RQ-A.litmus ├── C-LB-LRW+R-Dd+OB-OB.litmus ├── C-LB-LRW+R-Dd+R-A+OB-O+OB-OB.litmus ├── C-LB-LRW+R-Dd+R-A+OB-O+R-A.litmus ├── C-LB-LRW+R-Dd+R-A+OB-O+R-Oc.litmus ├── C-LB-LRW+R-Dd+R-A+OB-O+R-Ok.litmus ├── C-LB-LRW+R-Dd+R-A+OB-O+RQ-A.litmus ├── C-LB-LRW+R-Dd+R-A+OB-OB.litmus ├── C-LB-LRW+R-Dd+R-A+R-A+OB-OB.litmus ├── C-LB-LRW+R-Dd+R-A+R-A+R-A.litmus ├── C-LB-LRW+R-Dd+R-A+R-A+R-Oc.litmus ├── C-LB-LRW+R-Dd+R-A+R-A+R-Ok.litmus ├── C-LB-LRW+R-Dd+R-A+R-A+RQ-A.litmus ├── C-LB-LRW+R-Dd+R-A+R-A.litmus ├── C-LB-LRW+R-Dd+R-A+R-Dd+R-A.litmus ├── C-LB-LRW+R-Dd+R-A+R-Dd+RQ-A.litmus ├── C-LB-LRW+R-Dd+R-A+R-OC+OB-OB.litmus ├── C-LB-LRW+R-Dd+R-A+R-OC+R-A.litmus ├── C-LB-LRW+R-Dd+R-A+R-OC+R-Oc.litmus ├── C-LB-LRW+R-Dd+R-A+R-Oc+OB-OB.litmus ├── C-LB-LRW+R-Dd+R-A+R-Oc+Oq-A.litmus ├── C-LB-LRW+R-Dd+R-A+R-Oc+R-A.litmus ├── C-LB-LRW+R-Dd+R-A+R-Oc+R-Oc.litmus ├── C-LB-LRW+R-Dd+R-A+R-Oc+R-Ok.litmus ├── C-LB-LRW+R-Dd+R-A+R-Oc+RQ-A.litmus ├── C-LB-LRW+R-Dd+R-A+R-Oc.litmus ├── C-LB-LRW+R-Dd+R-A+R-Ok.litmus ├── C-LB-LRW+R-Dd+R-A+RQ-A+R-A.litmus ├── C-LB-LRW+R-Dd+R-A+RQ-A.litmus ├── C-LB-LRW+R-Dd+R-A.litmus ├── C-LB-LRW+R-Dd+R-D.litmus ├── C-LB-LRW+R-Dd+R-Dcd.litmus ├── C-LB-LRW+R-Dd+R-Dcv.litmus ├── C-LB-LRW+R-Dd+R-Dd+OB-O+OB-OB.litmus ├── C-LB-LRW+R-Dd+R-Dd+OB-O+R-A.litmus ├── C-LB-LRW+R-Dd+R-Dd+OB-O+R-Oc.litmus ├── C-LB-LRW+R-Dd+R-Dd+OB-O+R-Ok.litmus ├── C-LB-LRW+R-Dd+R-Dd+OB-O+RQ-A.litmus ├── C-LB-LRW+R-Dd+R-Dd+OB-OB.litmus ├── C-LB-LRW+R-Dd+R-Dd+R-A+OB-OB.litmus ├── C-LB-LRW+R-Dd+R-Dd+R-A+R-A.litmus ├── C-LB-LRW+R-Dd+R-Dd+R-A+R-Oc.litmus ├── C-LB-LRW+R-Dd+R-Dd+R-A+R-Ok.litmus ├── C-LB-LRW+R-Dd+R-Dd+R-A+RQ-A.litmus ├── C-LB-LRW+R-Dd+R-Dd+R-A.litmus ├── C-LB-LRW+R-Dd+R-Dd+R-D.litmus ├── C-LB-LRW+R-Dd+R-Dd+R-Dcd.litmus ├── C-LB-LRW+R-Dd+R-Dd+R-Dcv.litmus ├── C-LB-LRW+R-Dd+R-Dd+R-Dd+OB-OB.litmus ├── C-LB-LRW+R-Dd+R-Dd+R-Dd+R-A.litmus ├── C-LB-LRW+R-Dd+R-Dd+R-Dd+R-D.litmus ├── C-LB-LRW+R-Dd+R-Dd+R-Dd+R-Dcd.litmus ├── C-LB-LRW+R-Dd+R-Dd+R-Dd+R-Dcv.litmus ├── C-LB-LRW+R-Dd+R-Dd+R-Dd+R-Dd.litmus ├── C-LB-LRW+R-Dd+R-Dd+R-Dd+R-Oc.litmus ├── C-LB-LRW+R-Dd+R-Dd+R-Dd+R-Ok.litmus ├── C-LB-LRW+R-Dd+R-Dd+R-Dd+R-Ov.litmus ├── C-LB-LRW+R-Dd+R-Dd+R-Dd+RQ-A.litmus ├── C-LB-LRW+R-Dd+R-Dd+R-Dd.litmus ├── C-LB-LRW+R-Dd+R-Dd+R-OC+OB-OB.litmus ├── C-LB-LRW+R-Dd+R-Dd+R-OC+R-A.litmus ├── C-LB-LRW+R-Dd+R-Dd+R-OC+R-Oc.litmus ├── C-LB-LRW+R-Dd+R-Dd+R-Oc+OB-OB.litmus ├── C-LB-LRW+R-Dd+R-Dd+R-Oc+Oq-A.litmus ├── C-LB-LRW+R-Dd+R-Dd+R-Oc+R-A.litmus ├── C-LB-LRW+R-Dd+R-Dd+R-Oc+R-Oc.litmus ├── C-LB-LRW+R-Dd+R-Dd+R-Oc+R-Ok.litmus ├── C-LB-LRW+R-Dd+R-Dd+R-Oc+RQ-A.litmus ├── C-LB-LRW+R-Dd+R-Dd+R-Oc.litmus ├── C-LB-LRW+R-Dd+R-Dd+R-Ok.litmus ├── C-LB-LRW+R-Dd+R-Dd+R-Ov.litmus ├── C-LB-LRW+R-Dd+R-Dd+RQ-A+R-A.litmus ├── C-LB-LRW+R-Dd+R-Dd+RQ-A.litmus ├── C-LB-LRW+R-Dd+R-Dd.litmus ├── C-LB-LRW+R-Dd+R-OC+OB-O+OB-OB.litmus ├── C-LB-LRW+R-Dd+R-OC+OB-O+R-A.litmus ├── C-LB-LRW+R-Dd+R-OC+OB-O+R-Oc.litmus ├── C-LB-LRW+R-Dd+R-OC+OB-OB.litmus ├── C-LB-LRW+R-Dd+R-OC+R-A+OB-OB.litmus ├── C-LB-LRW+R-Dd+R-OC+R-A+R-A.litmus ├── C-LB-LRW+R-Dd+R-OC+R-A+R-Oc.litmus ├── C-LB-LRW+R-Dd+R-OC+R-A.litmus ├── C-LB-LRW+R-Dd+R-OC+R-Dd+R-A.litmus ├── C-LB-LRW+R-Dd+R-OC+R-Dd+R-Oc.litmus ├── C-LB-LRW+R-Dd+R-OC+R-Oc+OB-OB.litmus ├── C-LB-LRW+R-Dd+R-OC+R-Oc+R-A.litmus ├── C-LB-LRW+R-Dd+R-OC+R-Oc+R-Oc.litmus ├── C-LB-LRW+R-Dd+R-OC+R-Oc.litmus ├── C-LB-LRW+R-Dd+R-Oc+OB-O+OB-OB.litmus ├── C-LB-LRW+R-Dd+R-Oc+OB-O+R-A.litmus ├── C-LB-LRW+R-Dd+R-Oc+OB-O+R-Oc.litmus ├── C-LB-LRW+R-Dd+R-Oc+OB-O+R-Ok.litmus ├── C-LB-LRW+R-Dd+R-Oc+OB-O+RQ-A.litmus ├── C-LB-LRW+R-Dd+R-Oc+OB-OB.litmus ├── C-LB-LRW+R-Dd+R-Oc+Oq-A.litmus ├── C-LB-LRW+R-Dd+R-Oc+R-A+OB-OB.litmus ├── C-LB-LRW+R-Dd+R-Oc+R-A+R-A.litmus ├── C-LB-LRW+R-Dd+R-Oc+R-A+R-Oc.litmus ├── C-LB-LRW+R-Dd+R-Oc+R-A+R-Ok.litmus ├── C-LB-LRW+R-Dd+R-Oc+R-A+RQ-A.litmus ├── C-LB-LRW+R-Dd+R-Oc+R-A.litmus ├── C-LB-LRW+R-Dd+R-Oc+R-Dd+R-A.litmus ├── C-LB-LRW+R-Dd+R-Oc+R-Dd+R-Oc.litmus ├── C-LB-LRW+R-Dd+R-Oc+R-Dd+R-Ok.litmus ├── C-LB-LRW+R-Dd+R-Oc+R-Dd+RQ-A.litmus ├── C-LB-LRW+R-Dd+R-Oc+R-Oc+OB-OB.litmus ├── C-LB-LRW+R-Dd+R-Oc+R-Oc+Oq-A.litmus ├── C-LB-LRW+R-Dd+R-Oc+R-Oc+R-A.litmus ├── C-LB-LRW+R-Dd+R-Oc+R-Oc+R-Oc.litmus ├── C-LB-LRW+R-Dd+R-Oc+R-Oc+R-Ok.litmus ├── C-LB-LRW+R-Dd+R-Oc+R-Oc+RQ-A.litmus ├── C-LB-LRW+R-Dd+R-Oc+R-Oc.litmus ├── C-LB-LRW+R-Dd+R-Oc+R-Ok.litmus ├── C-LB-LRW+R-Dd+R-Oc+RQ-A+R-A.litmus ├── C-LB-LRW+R-Dd+R-Oc+RQ-A.litmus ├── C-LB-LRW+R-Dd+R-Oc.litmus ├── C-LB-LRW+R-Dd+R-Ok.litmus ├── C-LB-LRW+R-Dd+R-Ov.litmus ├── C-LB-LRW+R-Dd+RQ-A+R-A.litmus ├── C-LB-LRW+R-Dd+RQ-A.litmus ├── C-LB-LRW+R-OC+OB-O+OB-O+OB-OB.litmus ├── C-LB-LRW+R-OC+OB-O+OB-OB.litmus ├── C-LB-LRW+R-OC+OB-O+R-Oc+OB-OB.litmus ├── C-LB-LRW+R-OC+OB-OB.litmus ├── C-LB-LRW+R-OC+R-Oc+OB-O+OB-OB.litmus ├── C-LB-LRW+R-OC+R-Oc+OB-OB.litmus ├── C-LB-LRW+R-OC+R-Oc+R-Oc+OB-OB.litmus ├── C-LB-LRW+R-OC+R-Oc+R-Oc+R-Oc.litmus ├── C-LB-LRW+R-OC+R-Oc+R-Oc.litmus ├── C-LB-LRW+R-OC+R-Oc.litmus ├── C-LB-LRW+R-Oc+O-O+OB-O+OB-OB.litmus ├── C-LB-LRW+R-Oc+OB-O+OB-O+OB-OB.litmus ├── C-LB-LRW+R-Oc+OB-O+OB-OB.litmus ├── C-LB-LRW+R-Oc+OB-O+R-Oc+OB-OB.litmus ├── C-LB-LRW+R-Oc+OB-OB.litmus ├── C-LB-LRW+R-Oc+Oq-A.litmus ├── C-LB-LRW+R-Oc+R-Oc+OB-O+OB-OB.litmus ├── C-LB-LRW+R-Oc+R-Oc+OB-OB.litmus ├── C-LB-LRW+R-Oc+R-Oc+R-Oc+OB-OB.litmus ├── C-LB-LRW+R-Oc+R-Oc+R-Oc+R-Oc.litmus ├── C-LB-LRW+R-Oc+R-Oc+R-Oc+R-Ok.litmus ├── C-LB-LRW+R-Oc+R-Oc+R-Oc.litmus ├── C-LB-LRW+R-Oc+R-Oc+R-Ok.litmus ├── C-LB-LRW+R-Oc+R-Oc.litmus ├── C-LB-LRW+R-Oc+R-Ok.litmus ├── C-LB-LRW+R-Od+R-Dd+OB-O+OB-OB.litmus ├── C-LB-LRW+R-Od+R-Dd+OB-O+R-A.litmus ├── C-LB-LRW+R-Od+R-Dd+OB-O+R-Oc.litmus ├── C-LB-LRW+R-Od+R-Dd+OB-OB.litmus ├── C-LB-LRW+R-Od+R-Dd+R-A+OB-OB.litmus ├── C-LB-LRW+R-Od+R-Dd+R-A+R-A.litmus ├── C-LB-LRW+R-Od+R-Dd+R-A+R-Oc.litmus ├── C-LB-LRW+R-Od+R-Dd+R-A.litmus ├── C-LB-LRW+R-Od+R-Dd+R-Dd+OB-OB.litmus ├── C-LB-LRW+R-Od+R-Dd+R-Dd+R-A.litmus ├── C-LB-LRW+R-Od+R-Dd+R-Dd+R-Dd.litmus ├── C-LB-LRW+R-Od+R-Dd+R-Dd+R-Oc.litmus ├── C-LB-LRW+R-Od+R-Dd+R-Dd.litmus ├── C-LB-LRW+R-Od+R-Dd+R-Oc+OB-OB.litmus ├── C-LB-LRW+R-Od+R-Dd+R-Oc+R-A.litmus ├── C-LB-LRW+R-Od+R-Dd+R-Oc+R-Oc.litmus ├── C-LB-LRW+R-Od+R-Dd+R-Oc.litmus ├── C-LB-LRW+R-Ov+R-OC+R-Dd+OB-O+OB-OB.litmus ├── C-LB-LRW+R-Ov+R-OC+R-Dd+OB-O+R-A.litmus ├── C-LB-LRW+R-Ov+R-OC+R-Dd+OB-O+R-Oc.litmus ├── C-LB-LRW+R-Ov+R-OC+R-Dd+OB-OB.litmus ├── C-LB-LRW+R-Ov+R-OC+R-Dd+R-A+OB-OB.litmus ├── C-LB-LRW+R-Ov+R-OC+R-Dd+R-A+R-A.litmus ├── C-LB-LRW+R-Ov+R-OC+R-Dd+R-A+R-Oc.litmus ├── C-LB-LRW+R-Ov+R-OC+R-Dd+R-A.litmus ├── C-LB-LRW+R-Ov+R-OC+R-Dd+R-Dd+OB-OB.litmus ├── C-LB-LRW+R-Ov+R-OC+R-Dd+R-Dd+R-A.litmus ├── C-LB-LRW+R-Ov+R-OC+R-Dd+R-Dd+R-Dd.litmus ├── C-LB-LRW+R-Ov+R-OC+R-Dd+R-Dd+R-Oc.litmus ├── C-LB-LRW+R-Ov+R-OC+R-Dd+R-Dd.litmus ├── C-LB-LRW+R-Ov+R-OC+R-Dd+R-Oc+OB-OB.litmus ├── C-LB-LRW+R-Ov+R-OC+R-Dd+R-Oc+R-A.litmus ├── C-LB-LRW+R-Ov+R-OC+R-Dd+R-Oc+R-Oc.litmus ├── C-LB-LRW+R-Ov+R-OC+R-Dd+R-Oc.litmus ├── C-LB-LRW+RQ-A+R-A.litmus ├── C-LB-LWR+OB-O+OB-O+OB-O+OB-OB.litmus ├── C-LB-LWR+OB-O+OB-O+OB-OB.litmus ├── C-LB-LWR+OB-O+OB-OB.litmus ├── C-LB-LWR+R-A+O-Dd.litmus ├── C-LB-LWR+R-A+OB-Dd.litmus ├── C-LB-LWR+R-A+OB-O+OB-O+OB-OB.litmus ├── C-LB-LWR+R-A+OB-O+OB-O+R-Oc.litmus ├── C-LB-LWR+R-A+OB-O+OB-OB.litmus ├── C-LB-LWR+R-A+OB-O+R-A+OB-OB.litmus ├── C-LB-LWR+R-A+OB-O+R-A+R-Oc.litmus ├── C-LB-LWR+R-A+OB-O+R-Oc+OB-OB.litmus ├── C-LB-LWR+R-A+OB-O+R-Oc+R-Oc.litmus ├── C-LB-LWR+R-A+OB-O+R-Oc.litmus ├── C-LB-LWR+R-A+OB-OB.litmus ├── C-LB-LWR+R-A+R-A+OB-O+OB-OB.litmus ├── C-LB-LWR+R-A+R-A+OB-O+R-Oc.litmus ├── C-LB-LWR+R-A+R-A+OB-OB.litmus ├── C-LB-LWR+R-A+R-A+R-A+OB-OB.litmus ├── C-LB-LWR+R-A+R-A+R-A+R-A.litmus ├── C-LB-LWR+R-A+R-A+R-A+R-Oc.litmus ├── C-LB-LWR+R-A+R-A+R-A.litmus ├── C-LB-LWR+R-A+R-A+R-Oc+OB-OB.litmus ├── C-LB-LWR+R-A+R-A+R-Oc+R-Oc.litmus ├── C-LB-LWR+R-A+R-A+R-Oc.litmus ├── C-LB-LWR+R-A+R-A.litmus ├── C-LB-LWR+R-A+R-Dd.litmus ├── C-LB-LWR+R-A+R-Oc+OB-O+OB-OB.litmus ├── C-LB-LWR+R-A+R-Oc+OB-O+R-Oc.litmus ├── C-LB-LWR+R-A+R-Oc+OB-OB.litmus ├── C-LB-LWR+R-A+R-Oc+R-A+R-Oc.litmus ├── C-LB-LWR+R-A+R-Oc+R-Oc+OB-OB.litmus ├── C-LB-LWR+R-A+R-Oc+R-Oc+R-Oc.litmus ├── C-LB-LWR+R-A+R-Oc+R-Oc.litmus ├── C-LB-LWR+R-A+R-Oc.litmus ├── C-LB-LWR+R-Dd+OB-O+OB-O+OB-OB.litmus ├── C-LB-LWR+R-Dd+OB-O+OB-O+R-A.litmus ├── C-LB-LWR+R-Dd+OB-O+OB-O+R-Oc.litmus ├── C-LB-LWR+R-Dd+OB-O+OB-OB.litmus ├── C-LB-LWR+R-Dd+OB-O+R-A+OB-OB.litmus ├── C-LB-LWR+R-Dd+OB-O+R-A+R-A.litmus ├── C-LB-LWR+R-Dd+OB-O+R-A+R-Oc.litmus ├── C-LB-LWR+R-Dd+OB-O+R-A.litmus ├── C-LB-LWR+R-Dd+OB-O+R-Dd+OB-OB.litmus ├── C-LB-LWR+R-Dd+OB-O+R-Dd+R-A.litmus ├── C-LB-LWR+R-Dd+OB-O+R-Dd+R-Oc.litmus ├── C-LB-LWR+R-Dd+OB-O+R-Oc+OB-OB.litmus ├── C-LB-LWR+R-Dd+OB-O+R-Oc+R-A.litmus ├── C-LB-LWR+R-Dd+OB-O+R-Oc+R-Oc.litmus ├── C-LB-LWR+R-Dd+OB-O+R-Oc.litmus ├── C-LB-LWR+R-Dd+OB-OB.litmus ├── C-LB-LWR+R-Dd+R-A+OB-O+OB-OB.litmus ├── C-LB-LWR+R-Dd+R-A+OB-O+R-A.litmus ├── C-LB-LWR+R-Dd+R-A+OB-O+R-Oc.litmus ├── C-LB-LWR+R-Dd+R-A+OB-OB.litmus ├── C-LB-LWR+R-Dd+R-A+R-A+OB-OB.litmus ├── C-LB-LWR+R-Dd+R-A+R-A+R-A.litmus ├── C-LB-LWR+R-Dd+R-A+R-A+R-Oc.litmus ├── C-LB-LWR+R-Dd+R-A+R-A.litmus ├── C-LB-LWR+R-Dd+R-A+R-Dd+R-A.litmus ├── C-LB-LWR+R-Dd+R-A+R-Oc+OB-OB.litmus ├── C-LB-LWR+R-Dd+R-A+R-Oc+R-A.litmus ├── C-LB-LWR+R-Dd+R-A+R-Oc+R-Oc.litmus ├── C-LB-LWR+R-Dd+R-A+R-Oc.litmus ├── C-LB-LWR+R-Dd+R-A.litmus ├── C-LB-LWR+R-Dd+R-Dd+OB-O+OB-OB.litmus ├── C-LB-LWR+R-Dd+R-Dd+OB-O+R-A.litmus ├── C-LB-LWR+R-Dd+R-Dd+OB-O+R-Oc.litmus ├── C-LB-LWR+R-Dd+R-Dd+OB-OB.litmus ├── C-LB-LWR+R-Dd+R-Dd+R-A+OB-OB.litmus ├── C-LB-LWR+R-Dd+R-Dd+R-A+R-A.litmus ├── C-LB-LWR+R-Dd+R-Dd+R-A+R-Oc.litmus ├── C-LB-LWR+R-Dd+R-Dd+R-A.litmus ├── C-LB-LWR+R-Dd+R-Dd+R-Dd+OB-OB.litmus ├── C-LB-LWR+R-Dd+R-Dd+R-Dd+R-A.litmus ├── C-LB-LWR+R-Dd+R-Dd+R-Dd+R-Dd.litmus ├── C-LB-LWR+R-Dd+R-Dd+R-Dd+R-Oc.litmus ├── C-LB-LWR+R-Dd+R-Dd+R-Dd.litmus ├── C-LB-LWR+R-Dd+R-Dd+R-Oc+OB-OB.litmus ├── C-LB-LWR+R-Dd+R-Dd+R-Oc+R-A.litmus ├── C-LB-LWR+R-Dd+R-Dd+R-Oc+R-Oc.litmus ├── C-LB-LWR+R-Dd+R-Dd+R-Oc.litmus ├── C-LB-LWR+R-Dd+R-Dd.litmus ├── C-LB-LWR+R-Dd+R-Oc+OB-O+OB-OB.litmus ├── C-LB-LWR+R-Dd+R-Oc+OB-O+R-A.litmus ├── C-LB-LWR+R-Dd+R-Oc+OB-O+R-Oc.litmus ├── C-LB-LWR+R-Dd+R-Oc+OB-OB.litmus ├── C-LB-LWR+R-Dd+R-Oc+R-A+OB-OB.litmus ├── C-LB-LWR+R-Dd+R-Oc+R-A+R-A.litmus ├── C-LB-LWR+R-Dd+R-Oc+R-A+R-Oc.litmus ├── C-LB-LWR+R-Dd+R-Oc+R-A.litmus ├── C-LB-LWR+R-Dd+R-Oc+R-Dd+R-A.litmus ├── C-LB-LWR+R-Dd+R-Oc+R-Dd+R-Oc.litmus ├── C-LB-LWR+R-Dd+R-Oc+R-Oc+OB-OB.litmus ├── C-LB-LWR+R-Dd+R-Oc+R-Oc+R-A.litmus ├── C-LB-LWR+R-Dd+R-Oc+R-Oc+R-Oc.litmus ├── C-LB-LWR+R-Dd+R-Oc+R-Oc.litmus ├── C-LB-LWR+R-Dd+R-Oc.litmus ├── C-LB-LWR+R-Oc+OB-O+OB-O+OB-OB.litmus ├── C-LB-LWR+R-Oc+OB-O+OB-OB.litmus ├── C-LB-LWR+R-Oc+OB-O+R-Oc+OB-OB.litmus ├── C-LB-LWR+R-Oc+OB-OB.litmus ├── C-LB-LWR+R-Oc+R-Oc+OB-O+OB-OB.litmus ├── C-LB-LWR+R-Oc+R-Oc+OB-OB.litmus ├── C-LB-LWR+R-Oc+R-Oc+R-Oc+OB-OB.litmus ├── C-LB-LWR+R-Oc+R-Oc+R-Oc+R-Oc.litmus ├── C-LB-LWR+R-Oc+R-Oc+R-Oc.litmus ├── C-LB-LWR+R-Oc+R-Oc.litmus ├── C-LB-LWW+OB-O+OB-O+OB-O+OB-OB.litmus ├── C-LB-LWW+OB-O+OB-O+OB-OB.litmus ├── C-LB-LWW+OB-O+OB-OB.litmus ├── C-LB-LWW+R-A+O-Dd.litmus ├── C-LB-LWW+R-A+OB-Dd.litmus ├── C-LB-LWW+R-A+OB-O+OB-O+OB-OB.litmus ├── C-LB-LWW+R-A+OB-O+OB-O+R-Oc.litmus ├── C-LB-LWW+R-A+OB-O+OB-OB.litmus ├── C-LB-LWW+R-A+OB-O+R-A+OB-OB.litmus ├── C-LB-LWW+R-A+OB-O+R-A+R-Oc.litmus ├── C-LB-LWW+R-A+OB-O+R-Oc+OB-OB.litmus ├── C-LB-LWW+R-A+OB-O+R-Oc+R-Oc.litmus ├── C-LB-LWW+R-A+OB-O+R-Oc.litmus ├── C-LB-LWW+R-A+OB-OB.litmus ├── C-LB-LWW+R-A+R-A+OB-O+OB-OB.litmus ├── C-LB-LWW+R-A+R-A+OB-O+R-Oc.litmus ├── C-LB-LWW+R-A+R-A+OB-OB.litmus ├── C-LB-LWW+R-A+R-A+R-A+OB-OB.litmus ├── C-LB-LWW+R-A+R-A+R-A+R-A.litmus ├── C-LB-LWW+R-A+R-A+R-A+R-Oc.litmus ├── C-LB-LWW+R-A+R-A+R-A.litmus ├── C-LB-LWW+R-A+R-A+R-Oc+OB-OB.litmus ├── C-LB-LWW+R-A+R-A+R-Oc+R-Oc.litmus ├── C-LB-LWW+R-A+R-A+R-Oc.litmus ├── C-LB-LWW+R-A+R-A.litmus ├── C-LB-LWW+R-A+R-Dd.litmus ├── C-LB-LWW+R-A+R-Oc+OB-O+OB-OB.litmus ├── C-LB-LWW+R-A+R-Oc+OB-O+R-Oc.litmus ├── C-LB-LWW+R-A+R-Oc+OB-OB.litmus ├── C-LB-LWW+R-A+R-Oc+R-A+R-Oc.litmus ├── C-LB-LWW+R-A+R-Oc+R-Oc+OB-OB.litmus ├── C-LB-LWW+R-A+R-Oc+R-Oc+R-Oc.litmus ├── C-LB-LWW+R-A+R-Oc+R-Oc.litmus ├── C-LB-LWW+R-A+R-Oc.litmus ├── C-LB-LWW+R-Dd+OB-O+OB-O+OB-OB.litmus ├── C-LB-LWW+R-Dd+OB-O+OB-O+R-A.litmus ├── C-LB-LWW+R-Dd+OB-O+OB-O+R-Oc.litmus ├── C-LB-LWW+R-Dd+OB-O+OB-OB.litmus ├── C-LB-LWW+R-Dd+OB-O+R-A+OB-OB.litmus ├── C-LB-LWW+R-Dd+OB-O+R-A+R-A.litmus ├── C-LB-LWW+R-Dd+OB-O+R-A+R-Oc.litmus ├── C-LB-LWW+R-Dd+OB-O+R-A.litmus ├── C-LB-LWW+R-Dd+OB-O+R-Dd+OB-OB.litmus ├── C-LB-LWW+R-Dd+OB-O+R-Dd+R-A.litmus ├── C-LB-LWW+R-Dd+OB-O+R-Dd+R-Oc.litmus ├── C-LB-LWW+R-Dd+OB-O+R-Oc+OB-OB.litmus ├── C-LB-LWW+R-Dd+OB-O+R-Oc+R-A.litmus ├── C-LB-LWW+R-Dd+OB-O+R-Oc+R-Oc.litmus ├── C-LB-LWW+R-Dd+OB-O+R-Oc.litmus ├── C-LB-LWW+R-Dd+OB-OB.litmus ├── C-LB-LWW+R-Dd+R-A+OB-O+OB-OB.litmus ├── C-LB-LWW+R-Dd+R-A+OB-O+R-A.litmus ├── C-LB-LWW+R-Dd+R-A+OB-O+R-Oc.litmus ├── C-LB-LWW+R-Dd+R-A+OB-OB.litmus ├── C-LB-LWW+R-Dd+R-A+R-A+OB-OB.litmus ├── C-LB-LWW+R-Dd+R-A+R-A+R-A.litmus ├── C-LB-LWW+R-Dd+R-A+R-A+R-Oc.litmus ├── C-LB-LWW+R-Dd+R-A+R-A.litmus ├── C-LB-LWW+R-Dd+R-A+R-Dd+R-A.litmus ├── C-LB-LWW+R-Dd+R-A+R-Oc+OB-OB.litmus ├── C-LB-LWW+R-Dd+R-A+R-Oc+R-A.litmus ├── C-LB-LWW+R-Dd+R-A+R-Oc+R-Oc.litmus ├── C-LB-LWW+R-Dd+R-A+R-Oc.litmus ├── C-LB-LWW+R-Dd+R-A.litmus ├── C-LB-LWW+R-Dd+R-Dd+OB-O+OB-OB.litmus ├── C-LB-LWW+R-Dd+R-Dd+OB-O+R-A.litmus ├── C-LB-LWW+R-Dd+R-Dd+OB-O+R-Oc.litmus ├── C-LB-LWW+R-Dd+R-Dd+OB-OB.litmus ├── C-LB-LWW+R-Dd+R-Dd+R-A+OB-OB.litmus ├── C-LB-LWW+R-Dd+R-Dd+R-A+R-A.litmus ├── C-LB-LWW+R-Dd+R-Dd+R-A+R-Oc.litmus ├── C-LB-LWW+R-Dd+R-Dd+R-A.litmus ├── C-LB-LWW+R-Dd+R-Dd+R-Dd+OB-OB.litmus ├── C-LB-LWW+R-Dd+R-Dd+R-Dd+R-A.litmus ├── C-LB-LWW+R-Dd+R-Dd+R-Dd+R-Dd.litmus ├── C-LB-LWW+R-Dd+R-Dd+R-Dd+R-Oc.litmus ├── C-LB-LWW+R-Dd+R-Dd+R-Dd.litmus ├── C-LB-LWW+R-Dd+R-Dd+R-Oc+OB-OB.litmus ├── C-LB-LWW+R-Dd+R-Dd+R-Oc+R-A.litmus ├── C-LB-LWW+R-Dd+R-Dd+R-Oc+R-Oc.litmus ├── C-LB-LWW+R-Dd+R-Dd+R-Oc.litmus ├── C-LB-LWW+R-Dd+R-Dd.litmus ├── C-LB-LWW+R-Dd+R-Oc+OB-O+OB-OB.litmus ├── C-LB-LWW+R-Dd+R-Oc+OB-O+R-A.litmus ├── C-LB-LWW+R-Dd+R-Oc+OB-O+R-Oc.litmus ├── C-LB-LWW+R-Dd+R-Oc+OB-OB.litmus ├── C-LB-LWW+R-Dd+R-Oc+R-A+OB-OB.litmus ├── C-LB-LWW+R-Dd+R-Oc+R-A+R-A.litmus ├── C-LB-LWW+R-Dd+R-Oc+R-A+R-Oc.litmus ├── C-LB-LWW+R-Dd+R-Oc+R-A.litmus ├── C-LB-LWW+R-Dd+R-Oc+R-Dd+R-A.litmus ├── C-LB-LWW+R-Dd+R-Oc+R-Dd+R-Oc.litmus ├── C-LB-LWW+R-Dd+R-Oc+R-Oc+OB-OB.litmus ├── C-LB-LWW+R-Dd+R-Oc+R-Oc+R-A.litmus ├── C-LB-LWW+R-Dd+R-Oc+R-Oc+R-Oc.litmus ├── C-LB-LWW+R-Dd+R-Oc+R-Oc.litmus ├── C-LB-LWW+R-Dd+R-Oc.litmus ├── C-LB-LWW+R-Oc+OB-O+OB-O+OB-OB.litmus ├── C-LB-LWW+R-Oc+OB-O+OB-OB.litmus ├── C-LB-LWW+R-Oc+OB-O+R-Oc+OB-OB.litmus ├── C-LB-LWW+R-Oc+OB-OB.litmus ├── C-LB-LWW+R-Oc+R-Oc+OB-O+OB-OB.litmus ├── C-LB-LWW+R-Oc+R-Oc+OB-OB.litmus ├── C-LB-LWW+R-Oc+R-Oc+R-Oc+OB-OB.litmus ├── C-LB-LWW+R-Oc+R-Oc+R-Oc+R-Oc.litmus ├── C-LB-LWW+R-Oc+R-Oc+R-Oc.litmus ├── C-LB-LWW+R-Oc+R-Oc.litmus ├── C-LB-Lrw+R-A+R-A+R-A.litmus ├── C-LB-Lrw+R-A+R-A+R-D.litmus ├── C-LB-Lrw+R-A+R-A+R-OC.litmus ├── C-LB-Lrw+R-A+R-A+R-Oc.litmus ├── C-LB-Lrw+R-A+R-A+R-Od.litmus ├── C-LB-Lrw+R-A+R-A.litmus ├── C-LB-Lrw+R-A+R-D+R-D.litmus ├── C-LB-Lrw+R-A+R-D+R-OC.litmus ├── C-LB-Lrw+R-A+R-D+R-Oc.litmus ├── C-LB-Lrw+R-A+R-D+R-Od.litmus ├── C-LB-Lrw+R-A+R-D.litmus ├── C-LB-Lrw+R-A+R-OC+R-D.litmus ├── C-LB-Lrw+R-A+R-OC+R-OC.litmus ├── C-LB-Lrw+R-A+R-OC+R-Oc.litmus ├── C-LB-Lrw+R-A+R-OC+R-Od.litmus ├── C-LB-Lrw+R-A+R-OC.litmus ├── C-LB-Lrw+R-A+R-Oc+R-D.litmus ├── C-LB-Lrw+R-A+R-Oc+R-OC.litmus ├── C-LB-Lrw+R-A+R-Oc+R-Oc.litmus ├── C-LB-Lrw+R-A+R-Oc+R-Od.litmus ├── C-LB-Lrw+R-A+R-Oc.litmus ├── C-LB-Lrw+R-A+R-Od+R-D.litmus ├── C-LB-Lrw+R-A+R-Od+R-OC.litmus ├── C-LB-Lrw+R-A+R-Od+R-Oc.litmus ├── C-LB-Lrw+R-A+R-Od+R-Od.litmus ├── C-LB-Lrw+R-A+R-Od.litmus ├── C-LB-Lrw+R-A+R-Ov+R-D.litmus ├── C-LB-Lrw+R-A+R-Ov+R-OC.litmus ├── C-LB-Lrw+R-A+R-Ov+R-Oc.litmus ├── C-LB-Lrw+R-A.litmus ├── C-LB-Lrw+R-D+R-D+R-D.litmus ├── C-LB-Lrw+R-D+R-D.litmus ├── C-LB-Lrw+R-D.litmus ├── C-LB-Lrw+R-OC+R-D+R-D.litmus ├── C-LB-Lrw+R-OC+R-D+R-Od.litmus ├── C-LB-Lrw+R-OC+R-D.litmus ├── C-LB-Lrw+R-OC+R-OC+R-D.litmus ├── C-LB-Lrw+R-OC+R-OC+R-OC.litmus ├── C-LB-Lrw+R-OC+R-OC+R-Od.litmus ├── C-LB-Lrw+R-OC+R-OC.litmus ├── C-LB-Lrw+R-OC+R-Od+R-D.litmus ├── C-LB-Lrw+R-OC+R-Od+R-Od.litmus ├── C-LB-Lrw+R-OC+R-Od.litmus ├── C-LB-Lrw+R-OC+R-Ov+R-D.litmus ├── C-LB-Lrw+R-OC.litmus ├── C-LB-Lrw+R-Oc+R-D+R-D.litmus ├── C-LB-Lrw+R-Oc+R-D+R-OC.litmus ├── C-LB-Lrw+R-Oc+R-D+R-Od.litmus ├── C-LB-Lrw+R-Oc+R-D.litmus ├── C-LB-Lrw+R-Oc+R-OC+R-D.litmus ├── C-LB-Lrw+R-Oc+R-OC+R-OC.litmus ├── C-LB-Lrw+R-Oc+R-OC+R-Od.litmus ├── C-LB-Lrw+R-Oc+R-OC.litmus ├── C-LB-Lrw+R-Oc+R-Oc+R-D.litmus ├── C-LB-Lrw+R-Oc+R-Oc+R-OC.litmus ├── C-LB-Lrw+R-Oc+R-Oc+R-Oc.litmus ├── C-LB-Lrw+R-Oc+R-Oc+R-Od.litmus ├── C-LB-Lrw+R-Oc+R-Oc.litmus ├── C-LB-Lrw+R-Oc+R-Od+R-D.litmus ├── C-LB-Lrw+R-Oc+R-Od+R-OC.litmus ├── C-LB-Lrw+R-Oc+R-Od+R-Od.litmus ├── C-LB-Lrw+R-Oc+R-Od.litmus ├── C-LB-Lrw+R-Oc+R-Ov+R-D.litmus ├── C-LB-Lrw+R-Oc+R-Ov+R-OC.litmus ├── C-LB-Lrw+R-Oc.litmus ├── C-LB-Lrw+R-Od+R-D+R-D.litmus ├── C-LB-Lrw+R-Od+R-D.litmus ├── C-LB-Lrw+R-Od+R-Od+R-D.litmus ├── C-LB-Lrw+R-Od+R-Od+R-Od.litmus ├── C-LB-Lrw+R-Od+R-Od.litmus ├── C-LB-Lrw+R-Od+R-Ov+R-D.litmus ├── C-LB-Lrw+R-Od.litmus ├── C-LB-Lwr+R-A+R-A+R-A.litmus ├── C-LB-Lwr+R-A+R-A+R-D.litmus ├── C-LB-Lwr+R-A+R-A+R-OC.litmus ├── C-LB-Lwr+R-A+R-A+R-Oc.litmus ├── C-LB-Lwr+R-A+R-A+R-Od.litmus ├── C-LB-Lwr+R-A+R-A.litmus ├── C-LB-Lwr+R-A+R-D+R-D.litmus ├── C-LB-Lwr+R-A+R-D+R-OC.litmus ├── C-LB-Lwr+R-A+R-D+R-Oc.litmus ├── C-LB-Lwr+R-A+R-D+R-Od.litmus ├── C-LB-Lwr+R-A+R-D.litmus ├── C-LB-Lwr+R-A+R-OC+R-D.litmus ├── C-LB-Lwr+R-A+R-OC+R-OC.litmus ├── C-LB-Lwr+R-A+R-OC+R-Oc.litmus ├── C-LB-Lwr+R-A+R-OC+R-Od.litmus ├── C-LB-Lwr+R-A+R-OC.litmus ├── C-LB-Lwr+R-A+R-Oc+R-D.litmus ├── C-LB-Lwr+R-A+R-Oc+R-OC.litmus ├── C-LB-Lwr+R-A+R-Oc+R-Oc.litmus ├── C-LB-Lwr+R-A+R-Oc+R-Od.litmus ├── C-LB-Lwr+R-A+R-Oc.litmus ├── C-LB-Lwr+R-A+R-Od+R-D.litmus ├── C-LB-Lwr+R-A+R-Od+R-OC.litmus ├── C-LB-Lwr+R-A+R-Od+R-Oc.litmus ├── C-LB-Lwr+R-A+R-Od+R-Od.litmus ├── C-LB-Lwr+R-A+R-Od.litmus ├── C-LB-Lwr+R-A+R-Ov+R-D.litmus ├── C-LB-Lwr+R-A+R-Ov+R-OC.litmus ├── C-LB-Lwr+R-A+R-Ov+R-Oc.litmus ├── C-LB-Lwr+R-A.litmus ├── C-LB-Lwr+R-D+R-D+R-D.litmus ├── C-LB-Lwr+R-D+R-D.litmus ├── C-LB-Lwr+R-D.litmus ├── C-LB-Lwr+R-OC+R-D+R-D.litmus ├── C-LB-Lwr+R-OC+R-D+R-Od.litmus ├── C-LB-Lwr+R-OC+R-D.litmus ├── C-LB-Lwr+R-OC+R-OC+R-D.litmus ├── C-LB-Lwr+R-OC+R-OC+R-OC.litmus ├── C-LB-Lwr+R-OC+R-OC+R-Od.litmus ├── C-LB-Lwr+R-OC+R-OC.litmus ├── C-LB-Lwr+R-OC+R-Od+R-D.litmus ├── C-LB-Lwr+R-OC+R-Od+R-Od.litmus ├── C-LB-Lwr+R-OC+R-Od.litmus ├── C-LB-Lwr+R-OC+R-Ov+R-D.litmus ├── C-LB-Lwr+R-OC.litmus ├── C-LB-Lwr+R-Oc+R-D+R-D.litmus ├── C-LB-Lwr+R-Oc+R-D+R-OC.litmus ├── C-LB-Lwr+R-Oc+R-D+R-Od.litmus ├── C-LB-Lwr+R-Oc+R-D.litmus ├── C-LB-Lwr+R-Oc+R-OC+R-D.litmus ├── C-LB-Lwr+R-Oc+R-OC+R-OC.litmus ├── C-LB-Lwr+R-Oc+R-OC+R-Od.litmus ├── C-LB-Lwr+R-Oc+R-OC.litmus ├── C-LB-Lwr+R-Oc+R-Oc+R-D.litmus ├── C-LB-Lwr+R-Oc+R-Oc+R-OC.litmus ├── C-LB-Lwr+R-Oc+R-Oc+R-Oc.litmus ├── C-LB-Lwr+R-Oc+R-Oc+R-Od.litmus ├── C-LB-Lwr+R-Oc+R-Oc.litmus ├── C-LB-Lwr+R-Oc+R-Od+R-D.litmus ├── C-LB-Lwr+R-Oc+R-Od+R-OC.litmus ├── C-LB-Lwr+R-Oc+R-Od+R-Od.litmus ├── C-LB-Lwr+R-Oc+R-Od.litmus ├── C-LB-Lwr+R-Oc+R-Ov+R-D.litmus ├── C-LB-Lwr+R-Oc+R-Ov+R-OC.litmus ├── C-LB-Lwr+R-Oc.litmus ├── C-LB-Lwr+R-Od+R-D+R-D.litmus ├── C-LB-Lwr+R-Od+R-D.litmus ├── C-LB-Lwr+R-Od+R-Od+R-D.litmus ├── C-LB-Lwr+R-Od+R-Od+R-Od.litmus ├── C-LB-Lwr+R-Od+R-Od.litmus ├── C-LB-Lwr+R-Od+R-Ov+R-D.litmus ├── C-LB-Lwr+R-Od.litmus ├── C-LB-Lww+R-A+R-A+R-A.litmus ├── C-LB-Lww+R-A+R-A+R-D.litmus ├── C-LB-Lww+R-A+R-A+R-OC.litmus ├── C-LB-Lww+R-A+R-A+R-Oc.litmus ├── C-LB-Lww+R-A+R-A+R-Od.litmus ├── C-LB-Lww+R-A+R-A.litmus ├── C-LB-Lww+R-A+R-D+R-D.litmus ├── C-LB-Lww+R-A+R-D+R-OC.litmus ├── C-LB-Lww+R-A+R-D+R-Oc.litmus ├── C-LB-Lww+R-A+R-D+R-Od.litmus ├── C-LB-Lww+R-A+R-D.litmus ├── C-LB-Lww+R-A+R-OC+R-D.litmus ├── C-LB-Lww+R-A+R-OC+R-OC.litmus ├── C-LB-Lww+R-A+R-OC+R-Oc.litmus ├── C-LB-Lww+R-A+R-OC+R-Od.litmus ├── C-LB-Lww+R-A+R-OC.litmus ├── C-LB-Lww+R-A+R-Oc+R-D.litmus ├── C-LB-Lww+R-A+R-Oc+R-OC.litmus ├── C-LB-Lww+R-A+R-Oc+R-Oc.litmus ├── C-LB-Lww+R-A+R-Oc+R-Od.litmus ├── C-LB-Lww+R-A+R-Oc.litmus ├── C-LB-Lww+R-A+R-Od+R-D.litmus ├── C-LB-Lww+R-A+R-Od+R-OC.litmus ├── C-LB-Lww+R-A+R-Od+R-Oc.litmus ├── C-LB-Lww+R-A+R-Od+R-Od.litmus ├── C-LB-Lww+R-A+R-Od.litmus ├── C-LB-Lww+R-A+R-Ov+R-D.litmus ├── C-LB-Lww+R-A+R-Ov+R-OC.litmus ├── C-LB-Lww+R-A+R-Ov+R-Oc.litmus ├── C-LB-Lww+R-A.litmus ├── C-LB-Lww+R-D+R-D+R-D.litmus ├── C-LB-Lww+R-D+R-D.litmus ├── C-LB-Lww+R-D.litmus ├── C-LB-Lww+R-OC+R-D+R-D.litmus ├── C-LB-Lww+R-OC+R-D+R-Od.litmus ├── C-LB-Lww+R-OC+R-D.litmus ├── C-LB-Lww+R-OC+R-OC+R-D.litmus ├── C-LB-Lww+R-OC+R-OC+R-OC.litmus ├── C-LB-Lww+R-OC+R-OC+R-Od.litmus ├── C-LB-Lww+R-OC+R-OC.litmus ├── C-LB-Lww+R-OC+R-Od+R-D.litmus ├── C-LB-Lww+R-OC+R-Od+R-Od.litmus ├── C-LB-Lww+R-OC+R-Od.litmus ├── C-LB-Lww+R-OC+R-Ov+R-D.litmus ├── C-LB-Lww+R-OC.litmus ├── C-LB-Lww+R-Oc+R-D+R-D.litmus ├── C-LB-Lww+R-Oc+R-D+R-OC.litmus ├── C-LB-Lww+R-Oc+R-D+R-Od.litmus ├── C-LB-Lww+R-Oc+R-D.litmus ├── C-LB-Lww+R-Oc+R-OC+R-D.litmus ├── C-LB-Lww+R-Oc+R-OC+R-OC.litmus ├── C-LB-Lww+R-Oc+R-OC+R-Od.litmus ├── C-LB-Lww+R-Oc+R-OC.litmus ├── C-LB-Lww+R-Oc+R-Oc+R-D.litmus ├── C-LB-Lww+R-Oc+R-Oc+R-OC.litmus ├── C-LB-Lww+R-Oc+R-Oc+R-Oc.litmus ├── C-LB-Lww+R-Oc+R-Oc+R-Od.litmus ├── C-LB-Lww+R-Oc+R-Oc.litmus ├── C-LB-Lww+R-Oc+R-Od+R-D.litmus ├── C-LB-Lww+R-Oc+R-Od+R-OC.litmus ├── C-LB-Lww+R-Oc+R-Od+R-Od.litmus ├── C-LB-Lww+R-Oc+R-Od.litmus ├── C-LB-Lww+R-Oc+R-Ov+R-D.litmus ├── C-LB-Lww+R-Oc+R-Ov+R-OC.litmus ├── C-LB-Lww+R-Oc.litmus ├── C-LB-Lww+R-Od+R-D+R-D.litmus ├── C-LB-Lww+R-Od+R-D.litmus ├── C-LB-Lww+R-Od+R-Od+R-D.litmus ├── C-LB-Lww+R-Od+R-Od+R-Od.litmus ├── C-LB-Lww+R-Od+R-Od.litmus ├── C-LB-Lww+R-Od+R-Ov+R-D.litmus ├── C-LB-Lww+R-Od.litmus ├── C-RR-G+RR-G+RR-G+RR-G+RR-G+RR-G+RR-G+RR-G.litmus ├── C-RR-G+RR-G+RR-G+RR-G+RR-G+RR-G+RR-G+RR-R.litmus ├── C-RR-G+RR-G+RR-G+RR-G+RR-G+RR-G+RR-G.litmus ├── C-RR-G+RR-G+RR-G+RR-G+RR-G+RR-G+RR-R+RR-R.litmus ├── C-RR-G+RR-G+RR-G+RR-G+RR-G+RR-G+RR-R.litmus ├── C-RR-G+RR-G+RR-G+RR-G+RR-G+RR-G.litmus ├── C-RR-G+RR-G+RR-G+RR-G+RR-G+RR-R+RR-R+RR-R.litmus ├── C-RR-G+RR-G+RR-G+RR-G+RR-G+RR-R+RR-R.litmus ├── C-RR-G+RR-G+RR-G+RR-G+RR-G+RR-R.litmus ├── C-RR-G+RR-G+RR-G+RR-G+RR-G.litmus ├── C-RR-G+RR-G+RR-G+RR-G+RR-R+RR-G+RR-G+RR-R.litmus ├── C-RR-G+RR-G+RR-G+RR-G+RR-R+RR-R+RR-R+RR-R.litmus ├── C-RR-G+RR-G+RR-G+RR-G+RR-R+RR-R+RR-R.litmus ├── C-RR-G+RR-G+RR-G+RR-G+RR-R+RR-R.litmus ├── C-RR-G+RR-G+RR-G+RR-G+RR-R.litmus ├── C-RR-G+RR-G+RR-G+RR-G.litmus ├── C-RR-G+RR-G+RR-G+RR-R+RR-G+RR-G+RR-G+RR-R.litmus ├── C-RR-G+RR-G+RR-G+RR-R+RR-G+RR-G+RR-R+RR-R.litmus ├── C-RR-G+RR-G+RR-G+RR-R+RR-G+RR-G+RR-R.litmus ├── C-RR-G+RR-G+RR-G+RR-R+RR-R+RR-R+RR-R+RR-R.litmus ├── C-RR-G+RR-G+RR-G+RR-R+RR-R+RR-R+RR-R.litmus ├── C-RR-G+RR-G+RR-G+RR-R+RR-R+RR-R.litmus ├── C-RR-G+RR-G+RR-G+RR-R+RR-R.litmus ├── C-RR-G+RR-G+RR-G+RR-R.litmus ├── C-RR-G+RR-G+RR-G.litmus ├── C-RR-G+RR-G+RR-R+RR-G+RR-G+RR-G+RR-R+RR-R.litmus ├── C-RR-G+RR-G+RR-R+RR-G+RR-G+RR-R+RR-R+RR-R.litmus ├── C-RR-G+RR-G+RR-R+RR-G+RR-G+RR-R+RR-R.litmus ├── C-RR-G+RR-G+RR-R+RR-G+RR-G+RR-R.litmus ├── C-RR-G+RR-G+RR-R+RR-R+RR-G+RR-G+RR-R+RR-R.litmus ├── C-RR-G+RR-G+RR-R+RR-R+RR-R+RR-R+RR-R+RR-R.litmus ├── C-RR-G+RR-G+RR-R+RR-R+RR-R+RR-R+RR-R.litmus ├── C-RR-G+RR-G+RR-R+RR-R+RR-R+RR-R.litmus ├── C-RR-G+RR-G+RR-R+RR-R+RR-R.litmus ├── C-RR-G+RR-G+RR-R+RR-R.litmus ├── C-RR-G+RR-G+RR-R.litmus ├── C-RR-G+RR-G.litmus ├── C-RR-G+RR-R+RR-G+RR-G+RR-G+RR-G+RR-G+RR-R.litmus ├── C-RR-G+RR-R+RR-G+RR-G+RR-G+RR-G+RR-R+RR-R.litmus ├── C-RR-G+RR-R+RR-G+RR-G+RR-G+RR-G+RR-R.litmus ├── C-RR-G+RR-R+RR-G+RR-G+RR-G+RR-R+RR-R+RR-R.litmus ├── C-RR-G+RR-R+RR-G+RR-G+RR-G+RR-R+RR-R.litmus ├── C-RR-G+RR-R+RR-G+RR-G+RR-G+RR-R.litmus ├── C-RR-G+RR-R+RR-G+RR-G+RR-R+RR-G+RR-G+RR-R.litmus ├── C-RR-G+RR-R+RR-G+RR-G+RR-R+RR-R+RR-R+RR-R.litmus ├── C-RR-G+RR-R+RR-G+RR-G+RR-R+RR-R+RR-R.litmus ├── C-RR-G+RR-R+RR-G+RR-G+RR-R+RR-R.litmus ├── C-RR-G+RR-R+RR-G+RR-G+RR-R.litmus ├── C-RR-G+RR-R+RR-G+RR-R+RR-G+RR-G+RR-G+RR-R.litmus ├── C-RR-G+RR-R+RR-G+RR-R+RR-G+RR-G+RR-R+RR-R.litmus ├── C-RR-G+RR-R+RR-G+RR-R+RR-G+RR-G+RR-R.litmus ├── C-RR-G+RR-R+RR-G+RR-R+RR-R+RR-G+RR-G+RR-R.litmus ├── C-RR-G+RR-R+RR-G+RR-R+RR-R+RR-G+RR-R.litmus ├── C-RR-G+RR-R+RR-G+RR-R+RR-R+RR-R+RR-G+RR-R.litmus ├── C-RR-G+RR-R+RR-G+RR-R.litmus ├── C-RR-G+RR-R+RR-R+RR-G+RR-G+RR-G+RR-G+RR-R.litmus ├── C-RR-G+RR-R+RR-R+RR-G+RR-G+RR-G+RR-R+RR-R.litmus ├── C-RR-G+RR-R+RR-R+RR-G+RR-G+RR-G+RR-R.litmus ├── C-RR-G+RR-R+RR-R+RR-G+RR-G+RR-R+RR-R+RR-R.litmus ├── C-RR-G+RR-R+RR-R+RR-G+RR-G+RR-R+RR-R.litmus ├── C-RR-G+RR-R+RR-R+RR-G+RR-G+RR-R.litmus ├── C-RR-G+RR-R+RR-R+RR-G+RR-R+RR-G+RR-G+RR-R.litmus ├── C-RR-G+RR-R+RR-R+RR-G+RR-R+RR-R+RR-G+RR-R.litmus ├── C-RR-G+RR-R+RR-R+RR-G+RR-R+RR-R.litmus ├── C-RR-G+RR-R+RR-R+RR-G+RR-R.litmus ├── C-RR-G+RR-R+RR-R+RR-R+RR-G+RR-G+RR-G+RR-R.litmus ├── C-RR-G+RR-R+RR-R+RR-R+RR-G+RR-G+RR-R+RR-R.litmus ├── C-RR-G+RR-R+RR-R+RR-R+RR-G+RR-G+RR-R.litmus ├── C-RR-G+RR-R+RR-R+RR-R+RR-G+RR-R+RR-R+RR-R.litmus ├── C-RR-G+RR-R+RR-R+RR-R+RR-G+RR-R+RR-R.litmus ├── C-RR-G+RR-R+RR-R+RR-R+RR-G+RR-R.litmus ├── C-RR-G+RR-R+RR-R+RR-R+RR-R+RR-G+RR-G+RR-R.litmus ├── C-RR-G+RR-R+RR-R+RR-R+RR-R+RR-G+RR-R+RR-R.litmus ├── C-RR-G+RR-R+RR-R+RR-R+RR-R+RR-G+RR-R.litmus ├── C-RR-G+RR-R+RR-R+RR-R+RR-R+RR-R+RR-G+RR-R.litmus ├── C-RR-G+RR-R+RR-R+RR-R+RR-R+RR-R+RR-R+RR-R.litmus ├── C-RR-G+RR-R+RR-R+RR-R+RR-R+RR-R+RR-R.litmus ├── C-RR-G+RR-R+RR-R+RR-R+RR-R+RR-R.litmus ├── C-RR-G+RR-R+RR-R+RR-R+RR-R.litmus ├── C-RR-G+RR-R+RR-R+RR-R.litmus ├── C-RR-G+RR-R+RR-R.litmus ├── C-RR-G+RR-R.litmus ├── C-RR-G.litmus ├── C-RR-GH+RR-R+RR-R+RR-R+RR-G+RR-R+RR-R.litmus ├── C-RR-GH+RR-R+RR-R+RR-R+RR-G+RR-R.litmus ├── C-RR-GH+RR-R+RR-R+RR-R+RR-R.litmus ├── C-RR-GH+RR-R+RR-R+RR-R.litmus ├── C-RR-GH+RR-R+RR-R.litmus ├── C-RR-GH+RR-R.litmus ├── C-RR-GR+RR-R+RR-R.litmus ├── C-RR-GR+RR-R.litmus ├── C-RR-GR1+RR-R+RR-R.litmus ├── C-RR-GR1+RR-R.litmus ├── C-RR-GR2+RR-R+RR-R.litmus ├── C-RR-GR2+RR-R.litmus ├── C-RR-GR3+RR-R+RR-R.litmus ├── C-RR-GR3+RR-R.litmus ├── C-RR-H+RR-R+RR-R+RR-G+RR-R+RR-R.litmus ├── C-RR-H+RR-R+RR-R+RR-G+RR-R.litmus ├── C-RR-H+RR-R+RR-R+RR-R.litmus ├── C-RR-H+RR-R+RR-R.litmus ├── C-RR-H+RR-R.litmus ├── C-RR-R+RR-R+RR-R+RR-R+RR-R+RR-R+RR-R+RR-R.litmus ├── C-RR-R+RR-R+RR-R+RR-R+RR-R+RR-R+RR-R.litmus ├── C-RR-R+RR-R+RR-R+RR-R+RR-R+RR-R.litmus ├── C-RR-R+RR-R+RR-R+RR-R+RR-R.litmus ├── C-RR-R+RR-R+RR-R+RR-R.litmus ├── C-RR-R+RR-R+RR-R.litmus ├── C-RR-R+RR-R.litmus ├── C-RR-R.litmus ├── C-RW-B+RW-B+RW-B+RW-B+RW-B+RW-B+RW-B+RW-B.litmus ├── C-RW-B+RW-B+RW-B+RW-B+RW-B+RW-B+RW-B.litmus ├── C-RW-B+RW-B+RW-B+RW-B+RW-B+RW-B.litmus ├── C-RW-B+RW-B+RW-B+RW-B+RW-B.litmus ├── C-RW-B+RW-B+RW-B+RW-B.litmus ├── C-RW-B+RW-B+RW-B.litmus ├── C-RW-B+RW-B.litmus ├── C-RW-B.litmus ├── C-RW-G+RW-B+RW-B+RW-B+RW-B+RW-B+RW-B+RW-B.litmus ├── C-RW-G+RW-B+RW-B+RW-B+RW-B+RW-B+RW-B.litmus ├── C-RW-G+RW-B+RW-B+RW-B+RW-B+RW-B+RW-G+RW-B.litmus ├── C-RW-G+RW-B+RW-B+RW-B+RW-B+RW-B.litmus ├── C-RW-G+RW-B+RW-B+RW-B+RW-B+RW-G+RW-B+RW-B.litmus ├── C-RW-G+RW-B+RW-B+RW-B+RW-B+RW-G+RW-B.litmus ├── C-RW-G+RW-B+RW-B+RW-B+RW-B+RW-G+RW-G+RW-B.litmus ├── C-RW-G+RW-B+RW-B+RW-B+RW-B.litmus ├── C-RW-G+RW-B+RW-B+RW-B+RW-G+RW-B+RW-B+RW-B.litmus ├── C-RW-G+RW-B+RW-B+RW-B+RW-G+RW-B+RW-B.litmus ├── C-RW-G+RW-B+RW-B+RW-B+RW-G+RW-B.litmus ├── C-RW-G+RW-B+RW-B+RW-B+RW-G+RW-G+RW-B+RW-B.litmus ├── C-RW-G+RW-B+RW-B+RW-B+RW-G+RW-G+RW-B.litmus ├── C-RW-G+RW-B+RW-B+RW-B+RW-G+RW-G+RW-G+RW-B.litmus ├── C-RW-G+RW-B+RW-B+RW-B.litmus ├── C-RW-G+RW-B+RW-B+RW-G+RW-B+RW-B+RW-G+RW-B.litmus ├── C-RW-G+RW-B+RW-B+RW-G+RW-B+RW-B.litmus ├── C-RW-G+RW-B+RW-B+RW-G+RW-B+RW-G+RW-G+RW-B.litmus ├── C-RW-G+RW-B+RW-B+RW-G+RW-B.litmus ├── C-RW-G+RW-B+RW-B+RW-G+RW-G+RW-B+RW-B+RW-B.litmus ├── C-RW-G+RW-B+RW-B+RW-G+RW-G+RW-B+RW-B.litmus ├── C-RW-G+RW-B+RW-B+RW-G+RW-G+RW-B.litmus ├── C-RW-G+RW-B+RW-B+RW-G+RW-G+RW-G+RW-B+RW-B.litmus ├── C-RW-G+RW-B+RW-B+RW-G+RW-G+RW-G+RW-B.litmus ├── C-RW-G+RW-B+RW-B+RW-G+RW-G+RW-G+RW-G+RW-B.litmus ├── C-RW-G+RW-B+RW-B.litmus ├── C-RW-G+RW-B+RW-G+RW-B+RW-B+RW-B+RW-G+RW-B.litmus ├── C-RW-G+RW-B+RW-G+RW-B+RW-B+RW-G+RW-B.litmus ├── C-RW-G+RW-B+RW-G+RW-B+RW-B+RW-G+RW-G+RW-B.litmus ├── C-RW-G+RW-B+RW-G+RW-B+RW-G+RW-G+RW-B+RW-B.litmus ├── C-RW-G+RW-B+RW-G+RW-B+RW-G+RW-G+RW-B.litmus ├── C-RW-G+RW-B+RW-G+RW-B+RW-G+RW-G+RW-G+RW-B.litmus ├── C-RW-G+RW-B+RW-G+RW-B+RW-G+RW-G+RW-r+RW-C.litmus ├── C-RW-G+RW-B+RW-G+RW-B+RW-G+RW-G+RW-r+RW-a.litmus ├── C-RW-G+RW-B+RW-G+RW-B.litmus ├── C-RW-G+RW-B+RW-G+RW-G+RW-B+RW-B+RW-B+RW-B.litmus ├── C-RW-G+RW-B+RW-G+RW-G+RW-B+RW-B+RW-B.litmus ├── C-RW-G+RW-B+RW-G+RW-G+RW-B+RW-B.litmus ├── C-RW-G+RW-B+RW-G+RW-G+RW-B+RW-G+RW-G+RW-B.litmus ├── C-RW-G+RW-B+RW-G+RW-G+RW-B.litmus ├── C-RW-G+RW-B+RW-G+RW-G+RW-G+RW-B+RW-B+RW-B.litmus ├── C-RW-G+RW-B+RW-G+RW-G+RW-G+RW-B+RW-B.litmus ├── C-RW-G+RW-B+RW-G+RW-G+RW-G+RW-B.litmus ├── C-RW-G+RW-B+RW-G+RW-G+RW-G+RW-G+RW-B+RW-B.litmus ├── C-RW-G+RW-B+RW-G+RW-G+RW-G+RW-G+RW-B.litmus ├── C-RW-G+RW-B+RW-G+RW-G+RW-G+RW-G+RW-G+RW-B.litmus ├── C-RW-G+RW-B+RW-G+RW-G+RW-G+RW-G+RW-r+RW-C.litmus ├── C-RW-G+RW-B+RW-G+RW-G+RW-G+RW-G+RW-r+RW-a.litmus ├── C-RW-G+RW-B+RW-G+RW-G+RW-G+RW-r+RW-C+RW-B.litmus ├── C-RW-G+RW-B+RW-G+RW-G+RW-G+RW-r+RW-C.litmus ├── C-RW-G+RW-B+RW-G+RW-G+RW-G+RW-r+RW-a+RW-B.litmus ├── C-RW-G+RW-B+RW-G+RW-G+RW-G+RW-r+RW-a.litmus ├── C-RW-G+RW-B+RW-G+RW-G+RW-r+RW-C+RW-B+RW-B.litmus ├── C-RW-G+RW-B+RW-G+RW-G+RW-r+RW-C+RW-B.litmus ├── C-RW-G+RW-B+RW-G+RW-G+RW-r+RW-C.litmus ├── C-RW-G+RW-B+RW-G+RW-G+RW-r+RW-a+RW-B+RW-B.litmus ├── C-RW-G+RW-B+RW-G+RW-G+RW-r+RW-a+RW-B.litmus ├── C-RW-G+RW-B+RW-G+RW-G+RW-r+RW-a.litmus ├── C-RW-G+RW-B+RW-G+RW-r+RW-C+RW-B+RW-G+RW-B.litmus ├── C-RW-G+RW-B+RW-G+RW-r+RW-C+RW-G+RW-B.litmus ├── C-RW-G+RW-B+RW-G+RW-r+RW-C+RW-G+RW-G+RW-B.litmus ├── C-RW-G+RW-B+RW-G+RW-r+RW-a+RW-B+RW-G+RW-B.litmus ├── C-RW-G+RW-B+RW-G+RW-r+RW-a+RW-G+RW-B.litmus ├── C-RW-G+RW-B+RW-G+RW-r+RW-a+RW-G+RW-G+RW-B.litmus ├── C-RW-G+RW-B.litmus ├── C-RW-G+RW-G+RW-B+RW-B+RW-B+RW-B+RW-B+RW-B.litmus ├── C-RW-G+RW-G+RW-B+RW-B+RW-B+RW-B+RW-B.litmus ├── C-RW-G+RW-G+RW-B+RW-B+RW-B+RW-B.litmus ├── C-RW-G+RW-G+RW-B+RW-B+RW-B.litmus ├── C-RW-G+RW-G+RW-B+RW-B+RW-G+RW-G+RW-B+RW-B.litmus ├── C-RW-G+RW-G+RW-B+RW-B.litmus ├── C-RW-G+RW-G+RW-B+RW-G+RW-G+RW-B+RW-B+RW-B.litmus ├── C-RW-G+RW-G+RW-B+RW-G+RW-G+RW-B+RW-B.litmus ├── C-RW-G+RW-G+RW-B+RW-G+RW-G+RW-B.litmus ├── C-RW-G+RW-G+RW-B+RW-G+RW-G+RW-G+RW-B+RW-B.litmus ├── C-RW-G+RW-G+RW-B+RW-G+RW-G+RW-G+RW-r+RW-C.litmus ├── C-RW-G+RW-G+RW-B+RW-G+RW-G+RW-G+RW-r+RW-a.litmus ├── C-RW-G+RW-G+RW-B+RW-G+RW-G+RW-r+RW-C+RW-B.litmus ├── C-RW-G+RW-G+RW-B+RW-G+RW-G+RW-r+RW-C.litmus ├── C-RW-G+RW-G+RW-B+RW-G+RW-G+RW-r+RW-a+RW-B.litmus ├── C-RW-G+RW-G+RW-B+RW-G+RW-G+RW-r+RW-a.litmus ├── C-RW-G+RW-G+RW-B.litmus ├── C-RW-G+RW-G+RW-G+RW-B+RW-B+RW-B+RW-B+RW-B.litmus ├── C-RW-G+RW-G+RW-G+RW-B+RW-B+RW-B+RW-B.litmus ├── C-RW-G+RW-G+RW-G+RW-B+RW-B+RW-B.litmus ├── C-RW-G+RW-G+RW-G+RW-B+RW-B.litmus ├── C-RW-G+RW-G+RW-G+RW-B+RW-G+RW-G+RW-B+RW-B.litmus ├── C-RW-G+RW-G+RW-G+RW-B+RW-G+RW-G+RW-B.litmus ├── C-RW-G+RW-G+RW-G+RW-B+RW-G+RW-G+RW-G+RW-B.litmus ├── C-RW-G+RW-G+RW-G+RW-B+RW-G+RW-G+RW-r+RW-C.litmus ├── C-RW-G+RW-G+RW-G+RW-B+RW-G+RW-G+RW-r+RW-a.litmus ├── C-RW-G+RW-G+RW-G+RW-B.litmus ├── C-RW-G+RW-G+RW-G+RW-G+RW-B+RW-B+RW-B+RW-B.litmus ├── C-RW-G+RW-G+RW-G+RW-G+RW-B+RW-B+RW-B.litmus ├── C-RW-G+RW-G+RW-G+RW-G+RW-B+RW-B.litmus ├── C-RW-G+RW-G+RW-G+RW-G+RW-B+RW-G+RW-G+RW-B.litmus ├── C-RW-G+RW-G+RW-G+RW-G+RW-B.litmus ├── C-RW-G+RW-G+RW-G+RW-G+RW-G+RW-B+RW-B+RW-B.litmus ├── C-RW-G+RW-G+RW-G+RW-G+RW-G+RW-B+RW-B.litmus ├── C-RW-G+RW-G+RW-G+RW-G+RW-G+RW-B.litmus ├── C-RW-G+RW-G+RW-G+RW-G+RW-G+RW-G+RW-B+RW-B.litmus ├── C-RW-G+RW-G+RW-G+RW-G+RW-G+RW-G+RW-B.litmus ├── C-RW-G+RW-G+RW-G+RW-G+RW-G+RW-G+RW-G+RW-B.litmus ├── C-RW-G+RW-G+RW-G+RW-G+RW-G+RW-G+RW-G+RW-G.litmus ├── C-RW-G+RW-G+RW-G+RW-G+RW-G+RW-G+RW-G+RW-R.litmus ├── C-RW-G+RW-G+RW-G+RW-G+RW-G+RW-G+RW-G+RW-RB.litmus ├── C-RW-G+RW-G+RW-G+RW-G+RW-G+RW-G+RW-G+RW-RI.litmus ├── C-RW-G+RW-G+RW-G+RW-G+RW-G+RW-G+RW-G.litmus ├── C-RW-G+RW-G+RW-G+RW-G+RW-G+RW-G+RW-R+RW-R.litmus ├── C-RW-G+RW-G+RW-G+RW-G+RW-G+RW-G+RW-R.litmus ├── C-RW-G+RW-G+RW-G+RW-G+RW-G+RW-G+RW-RB+RW-R.litmus ├── C-RW-G+RW-G+RW-G+RW-G+RW-G+RW-G+RW-RB.litmus ├── C-RW-G+RW-G+RW-G+RW-G+RW-G+RW-G+RW-RI+RW-RI.litmus ├── C-RW-G+RW-G+RW-G+RW-G+RW-G+RW-G+RW-RI.litmus ├── C-RW-G+RW-G+RW-G+RW-G+RW-G+RW-G+RW-Rr+RW-RC.litmus ├── C-RW-G+RW-G+RW-G+RW-G+RW-G+RW-G+RW-Rr+RW-Ra.litmus ├── C-RW-G+RW-G+RW-G+RW-G+RW-G+RW-G+RW-Rrd+RW-CD.litmus ├── C-RW-G+RW-G+RW-G+RW-G+RW-G+RW-G+RW-Rrd+RW-D.litmus ├── C-RW-G+RW-G+RW-G+RW-G+RW-G+RW-G+RW-Rs+RW-RCD.litmus ├── C-RW-G+RW-G+RW-G+RW-G+RW-G+RW-G+RW-Rs+RW-RD.litmus ├── C-RW-G+RW-G+RW-G+RW-G+RW-G+RW-G+RW-r+RW-C.litmus ├── C-RW-G+RW-G+RW-G+RW-G+RW-G+RW-G+RW-r+RW-a.litmus ├── C-RW-G+RW-G+RW-G+RW-G+RW-G+RW-G.litmus ├── C-RW-G+RW-G+RW-G+RW-G+RW-G+RW-R+RW-R+RW-R.litmus ├── C-RW-G+RW-G+RW-G+RW-G+RW-G+RW-R+RW-R.litmus ├── C-RW-G+RW-G+RW-G+RW-G+RW-G+RW-R.litmus ├── C-RW-G+RW-G+RW-G+RW-G+RW-G+RW-RB+RW-R+RW-R.litmus ├── C-RW-G+RW-G+RW-G+RW-G+RW-G+RW-RB+RW-R.litmus ├── C-RW-G+RW-G+RW-G+RW-G+RW-G+RW-RB.litmus ├── C-RW-G+RW-G+RW-G+RW-G+RW-G+RW-RI+RW-RI+RW-RI.litmus ├── C-RW-G+RW-G+RW-G+RW-G+RW-G+RW-RI+RW-RI.litmus ├── C-RW-G+RW-G+RW-G+RW-G+RW-G+RW-RI.litmus ├── C-RW-G+RW-G+RW-G+RW-G+RW-G+RW-Rr+RW-RC+RW-R.litmus ├── C-RW-G+RW-G+RW-G+RW-G+RW-G+RW-Rr+RW-RC.litmus ├── C-RW-G+RW-G+RW-G+RW-G+RW-G+RW-Rr+RW-Ra+RW-R.litmus ├── C-RW-G+RW-G+RW-G+RW-G+RW-G+RW-Rr+RW-Ra.litmus ├── C-RW-G+RW-G+RW-G+RW-G+RW-G+RW-Rrd+RW-CD+RW-R.litmus ├── C-RW-G+RW-G+RW-G+RW-G+RW-G+RW-Rrd+RW-CD.litmus ├── C-RW-G+RW-G+RW-G+RW-G+RW-G+RW-Rrd+RW-D+RW-R.litmus ├── C-RW-G+RW-G+RW-G+RW-G+RW-G+RW-Rrd+RW-D.litmus ├── C-RW-G+RW-G+RW-G+RW-G+RW-G+RW-Rs+RW-RCD+RW-R.litmus ├── C-RW-G+RW-G+RW-G+RW-G+RW-G+RW-Rs+RW-RCD.litmus ├── C-RW-G+RW-G+RW-G+RW-G+RW-G+RW-Rs+RW-RD+RW-R.litmus ├── C-RW-G+RW-G+RW-G+RW-G+RW-G+RW-Rs+RW-RD.litmus ├── C-RW-G+RW-G+RW-G+RW-G+RW-G+RW-r+RW-C+RW-B.litmus ├── C-RW-G+RW-G+RW-G+RW-G+RW-G+RW-r+RW-C.litmus ├── C-RW-G+RW-G+RW-G+RW-G+RW-G+RW-r+RW-a+RW-B.litmus ├── C-RW-G+RW-G+RW-G+RW-G+RW-G+RW-r+RW-a.litmus ├── C-RW-G+RW-G+RW-G+RW-G+RW-G.litmus ├── C-RW-G+RW-G+RW-G+RW-G+RW-R+RW-G+RW-G+RW-R.litmus ├── C-RW-G+RW-G+RW-G+RW-G+RW-R+RW-R+RW-R+RW-R.litmus ├── C-RW-G+RW-G+RW-G+RW-G+RW-R+RW-R+RW-R.litmus ├── C-RW-G+RW-G+RW-G+RW-G+RW-R+RW-R.litmus ├── C-RW-G+RW-G+RW-G+RW-G+RW-R.litmus ├── C-RW-G+RW-G+RW-G+RW-G+RW-RB+RW-G+RW-G+RW-R.litmus ├── C-RW-G+RW-G+RW-G+RW-G+RW-RB+RW-R+RW-R+RW-R.litmus ├── C-RW-G+RW-G+RW-G+RW-G+RW-RB+RW-R+RW-R.litmus ├── C-RW-G+RW-G+RW-G+RW-G+RW-RB+RW-R.litmus ├── C-RW-G+RW-G+RW-G+RW-G+RW-RB.litmus ├── C-RW-G+RW-G+RW-G+RW-G+RW-RI+RW-G+RW-G+RW-RI.litmus ├── C-RW-G+RW-G+RW-G+RW-G+RW-RI+RW-RI+RW-RI+RW-RI.litmus ├── C-RW-G+RW-G+RW-G+RW-G+RW-RI+RW-RI+RW-RI.litmus ├── C-RW-G+RW-G+RW-G+RW-G+RW-RI+RW-RI.litmus ├── C-RW-G+RW-G+RW-G+RW-G+RW-RI.litmus ├── C-RW-G+RW-G+RW-G+RW-G+RW-Rr+RW-RC+RW-R+RW-R.litmus ├── C-RW-G+RW-G+RW-G+RW-G+RW-Rr+RW-RC+RW-R.litmus ├── C-RW-G+RW-G+RW-G+RW-G+RW-Rr+RW-RC.litmus ├── C-RW-G+RW-G+RW-G+RW-G+RW-Rr+RW-Ra+RW-R+RW-R.litmus ├── C-RW-G+RW-G+RW-G+RW-G+RW-Rr+RW-Ra+RW-R.litmus ├── C-RW-G+RW-G+RW-G+RW-G+RW-Rr+RW-Ra.litmus ├── C-RW-G+RW-G+RW-G+RW-G+RW-Rrd+RW-CD+RW-R+RW-R.litmus ├── C-RW-G+RW-G+RW-G+RW-G+RW-Rrd+RW-CD+RW-R.litmus ├── C-RW-G+RW-G+RW-G+RW-G+RW-Rrd+RW-CD.litmus ├── C-RW-G+RW-G+RW-G+RW-G+RW-Rrd+RW-D+RW-R+RW-R.litmus ├── C-RW-G+RW-G+RW-G+RW-G+RW-Rrd+RW-D+RW-R.litmus ├── C-RW-G+RW-G+RW-G+RW-G+RW-Rrd+RW-D.litmus ├── C-RW-G+RW-G+RW-G+RW-G+RW-Rs+RW-RCD+RW-R+RW-R.litmus ├── C-RW-G+RW-G+RW-G+RW-G+RW-Rs+RW-RCD+RW-R.litmus ├── C-RW-G+RW-G+RW-G+RW-G+RW-Rs+RW-RCD.litmus ├── C-RW-G+RW-G+RW-G+RW-G+RW-Rs+RW-RD+RW-R+RW-R.litmus ├── C-RW-G+RW-G+RW-G+RW-G+RW-Rs+RW-RD+RW-R.litmus ├── C-RW-G+RW-G+RW-G+RW-G+RW-Rs+RW-RD.litmus ├── C-RW-G+RW-G+RW-G+RW-G+RW-r+RW-C+RW-B+RW-B.litmus ├── C-RW-G+RW-G+RW-G+RW-G+RW-r+RW-C+RW-B.litmus ├── C-RW-G+RW-G+RW-G+RW-G+RW-r+RW-C.litmus ├── C-RW-G+RW-G+RW-G+RW-G+RW-r+RW-a+RW-B+RW-B.litmus ├── C-RW-G+RW-G+RW-G+RW-G+RW-r+RW-a+RW-B.litmus ├── C-RW-G+RW-G+RW-G+RW-G+RW-r+RW-a.litmus ├── C-RW-G+RW-G+RW-G+RW-G.litmus ├── C-RW-G+RW-G+RW-G+RW-R+RW-G+RW-G+RW-G+RW-R.litmus ├── C-RW-G+RW-G+RW-G+RW-R+RW-G+RW-G+RW-R+RW-R.litmus ├── C-RW-G+RW-G+RW-G+RW-R+RW-G+RW-G+RW-R.litmus ├── C-RW-G+RW-G+RW-G+RW-R+RW-G+RW-G+RW-Rr+RW-RC.litmus ├── C-RW-G+RW-G+RW-G+RW-R+RW-G+RW-G+RW-Rr+RW-Ra.litmus ├── C-RW-G+RW-G+RW-G+RW-R+RW-G+RW-G+RW-Rrd+RW-CD.litmus ├── C-RW-G+RW-G+RW-G+RW-R+RW-G+RW-G+RW-Rrd+RW-D.litmus ├── C-RW-G+RW-G+RW-G+RW-R+RW-G+RW-G+RW-Rs+RW-RCD.litmus ├── C-RW-G+RW-G+RW-G+RW-R+RW-G+RW-G+RW-Rs+RW-RD.litmus ├── C-RW-G+RW-G+RW-G+RW-R+RW-R+RW-G+RW-R+RW-R.litmus ├── C-RW-G+RW-G+RW-G+RW-R+RW-R+RW-R+RW-R+RW-R.litmus ├── C-RW-G+RW-G+RW-G+RW-R+RW-R+RW-R+RW-R.litmus ├── C-RW-G+RW-G+RW-G+RW-R+RW-R+RW-R.litmus ├── C-RW-G+RW-G+RW-G+RW-R+RW-R.litmus ├── C-RW-G+RW-G+RW-G+RW-R.litmus ├── C-RW-G+RW-G+RW-G+RW-R1.litmus ├── C-RW-G+RW-G+RW-G+RW-R1I.litmus ├── C-RW-G+RW-G+RW-G+RW-R2.litmus ├── C-RW-G+RW-G+RW-G+RW-R2I.litmus ├── C-RW-G+RW-G+RW-G+RW-R3.litmus ├── C-RW-G+RW-G+RW-G+RW-R3I.litmus ├── C-RW-G+RW-G+RW-G+RW-RB+RW-G+RW-G+RW-G+RW-R.litmus ├── C-RW-G+RW-G+RW-G+RW-RB+RW-G+RW-G+RW-R+RW-R.litmus ├── C-RW-G+RW-G+RW-G+RW-RB+RW-G+RW-G+RW-R.litmus ├── C-RW-G+RW-G+RW-G+RW-RB+RW-R+RW-R+RW-R+RW-R.litmus ├── C-RW-G+RW-G+RW-G+RW-RB+RW-R+RW-R+RW-R.litmus ├── C-RW-G+RW-G+RW-G+RW-RB+RW-R+RW-R.litmus ├── C-RW-G+RW-G+RW-G+RW-RB+RW-R.litmus ├── C-RW-G+RW-G+RW-G+RW-RB.litmus ├── C-RW-G+RW-G+RW-G+RW-RI+RW-G+RW-G+RW-G+RW-RI.litmus ├── C-RW-G+RW-G+RW-G+RW-RI+RW-G+RW-G+RW-RI+RW-RI.litmus ├── C-RW-G+RW-G+RW-G+RW-RI+RW-G+RW-G+RW-RI.litmus ├── C-RW-G+RW-G+RW-G+RW-RI+RW-RI+RW-RI+RW-RI+RW-RI.litmus ├── C-RW-G+RW-G+RW-G+RW-RI+RW-RI+RW-RI+RW-RI.litmus ├── C-RW-G+RW-G+RW-G+RW-RI+RW-RI+RW-RI.litmus ├── C-RW-G+RW-G+RW-G+RW-RI+RW-RI.litmus ├── C-RW-G+RW-G+RW-G+RW-RI.litmus ├── C-RW-G+RW-G+RW-G+RW-Rr+RW-RC+RW-R+RW-R+RW-R.litmus ├── C-RW-G+RW-G+RW-G+RW-Rr+RW-RC+RW-R+RW-R.litmus ├── C-RW-G+RW-G+RW-G+RW-Rr+RW-RC+RW-R.litmus ├── C-RW-G+RW-G+RW-G+RW-Rr+RW-RC.litmus ├── C-RW-G+RW-G+RW-G+RW-Rr+RW-Ra+RW-R+RW-R+RW-R.litmus ├── C-RW-G+RW-G+RW-G+RW-Rr+RW-Ra+RW-R+RW-R.litmus ├── C-RW-G+RW-G+RW-G+RW-Rr+RW-Ra+RW-R.litmus ├── C-RW-G+RW-G+RW-G+RW-Rr+RW-Ra.litmus ├── C-RW-G+RW-G+RW-G+RW-Rrd+RW-CD+RW-R+RW-R+RW-R.litmus ├── C-RW-G+RW-G+RW-G+RW-Rrd+RW-CD+RW-R+RW-R.litmus ├── C-RW-G+RW-G+RW-G+RW-Rrd+RW-CD+RW-R.litmus ├── C-RW-G+RW-G+RW-G+RW-Rrd+RW-CD.litmus ├── C-RW-G+RW-G+RW-G+RW-Rrd+RW-D+RW-R+RW-R+RW-R.litmus ├── C-RW-G+RW-G+RW-G+RW-Rrd+RW-D+RW-R+RW-R.litmus ├── C-RW-G+RW-G+RW-G+RW-Rrd+RW-D+RW-R.litmus ├── C-RW-G+RW-G+RW-G+RW-Rrd+RW-D.litmus ├── C-RW-G+RW-G+RW-G+RW-Rs+RW-RCD+RW-R+RW-R+RW-R.litmus ├── C-RW-G+RW-G+RW-G+RW-Rs+RW-RCD+RW-R+RW-R.litmus ├── C-RW-G+RW-G+RW-G+RW-Rs+RW-RCD+RW-R.litmus ├── C-RW-G+RW-G+RW-G+RW-Rs+RW-RCD.litmus ├── C-RW-G+RW-G+RW-G+RW-Rs+RW-RD+RW-R+RW-R+RW-R.litmus ├── C-RW-G+RW-G+RW-G+RW-Rs+RW-RD+RW-R+RW-R.litmus ├── C-RW-G+RW-G+RW-G+RW-Rs+RW-RD+RW-R.litmus ├── C-RW-G+RW-G+RW-G+RW-Rs+RW-RD.litmus ├── C-RW-G+RW-G+RW-G+RW-r+RW-C+RW-B+RW-B+RW-B.litmus ├── C-RW-G+RW-G+RW-G+RW-r+RW-C+RW-B+RW-B.litmus ├── C-RW-G+RW-G+RW-G+RW-r+RW-C+RW-B.litmus ├── C-RW-G+RW-G+RW-G+RW-r+RW-C.litmus ├── C-RW-G+RW-G+RW-G+RW-r+RW-a+RW-B+RW-B+RW-B.litmus ├── C-RW-G+RW-G+RW-G+RW-r+RW-a+RW-B+RW-B.litmus ├── C-RW-G+RW-G+RW-G+RW-r+RW-a+RW-B.litmus ├── C-RW-G+RW-G+RW-G+RW-r+RW-a.litmus ├── C-RW-G+RW-G+RW-G.litmus ├── C-RW-G+RW-G+RW-R+RW-G+RW-G+RW-G+RW-R+RW-R.litmus ├── C-RW-G+RW-G+RW-R+RW-G+RW-G+RW-G+RW-Rr+RW-RC.litmus ├── C-RW-G+RW-G+RW-R+RW-G+RW-G+RW-G+RW-Rr+RW-Ra.litmus ├── C-RW-G+RW-G+RW-R+RW-G+RW-G+RW-G+RW-Rrd+RW-CD.litmus ├── C-RW-G+RW-G+RW-R+RW-G+RW-G+RW-G+RW-Rrd+RW-D.litmus ├── C-RW-G+RW-G+RW-R+RW-G+RW-G+RW-G+RW-Rs+RW-RCD.litmus ├── C-RW-G+RW-G+RW-R+RW-G+RW-G+RW-G+RW-Rs+RW-RD.litmus ├── C-RW-G+RW-G+RW-R+RW-G+RW-G+RW-R+RW-R+RW-R.litmus ├── C-RW-G+RW-G+RW-R+RW-G+RW-G+RW-R+RW-R.litmus ├── C-RW-G+RW-G+RW-R+RW-G+RW-G+RW-R.litmus ├── C-RW-G+RW-G+RW-R+RW-G+RW-G+RW-Rr+RW-RC+RW-R.litmus ├── C-RW-G+RW-G+RW-R+RW-G+RW-G+RW-Rr+RW-RC.litmus ├── C-RW-G+RW-G+RW-R+RW-G+RW-G+RW-Rr+RW-Ra+RW-R.litmus ├── C-RW-G+RW-G+RW-R+RW-G+RW-G+RW-Rr+RW-Ra.litmus ├── C-RW-G+RW-G+RW-R+RW-G+RW-G+RW-Rrd+RW-CD+RW-R.litmus ├── C-RW-G+RW-G+RW-R+RW-G+RW-G+RW-Rrd+RW-CD.litmus ├── C-RW-G+RW-G+RW-R+RW-G+RW-G+RW-Rrd+RW-D+RW-R.litmus ├── C-RW-G+RW-G+RW-R+RW-G+RW-G+RW-Rrd+RW-D.litmus ├── C-RW-G+RW-G+RW-R+RW-G+RW-G+RW-Rs+RW-RCD+RW-R.litmus ├── C-RW-G+RW-G+RW-R+RW-G+RW-G+RW-Rs+RW-RCD.litmus ├── C-RW-G+RW-G+RW-R+RW-G+RW-G+RW-Rs+RW-RD+RW-R.litmus ├── C-RW-G+RW-G+RW-R+RW-G+RW-G+RW-Rs+RW-RD.litmus ├── C-RW-G+RW-G+RW-R+RW-R+RW-G+RW-G+RW-R+RW-R.litmus ├── C-RW-G+RW-G+RW-R+RW-R+RW-R+RW-R+RW-G+RW-G+RW-G+RW-G+RW-G+RW-G+RW-R+RW-R+RW-R+RW-R+RW-G+RW-G+RW-G.litmus ├── C-RW-G+RW-G+RW-R+RW-R+RW-R+RW-R+RW-G+RW-G+RW-G+RW-G+RW-G+RW-G.litmus ├── C-RW-G+RW-G+RW-R+RW-R+RW-R+RW-R+RW-G+RW-G+RW-G+RW-G+RW-G+RW-R+RW-R+RW-R+RW-R+RW-G+RW-G+RW-G.litmus ├── C-RW-G+RW-G+RW-R+RW-R+RW-R+RW-R+RW-G+RW-G+RW-G+RW-G+RW-G+RW-R+RW-R+RW-R+RW-R+RW-G+RW-G+RW-R+RW-G.litmus ├── C-RW-G+RW-G+RW-R+RW-R+RW-R+RW-R+RW-G+RW-G+RW-G+RW-G+RW-G+RW-R.litmus ├── C-RW-G+RW-G+RW-R+RW-R+RW-R+RW-R+RW-G+RW-G+RW-G+RW-G+RW-G.litmus ├── C-RW-G+RW-G+RW-R+RW-R+RW-R+RW-R+RW-G+RW-G+RW-G+RW-G+RW-R+RW-G.litmus ├── C-RW-G+RW-G+RW-R+RW-R+RW-R+RW-R+RW-G+RW-G+RW-G+RW-G+RW-R+RW-R+RW-R+RW-R+RW-G+RW-G+RW-G+RW-G+RW-G.litmus ├── C-RW-G+RW-G+RW-R+RW-R+RW-R+RW-R+RW-G+RW-G+RW-G+RW-G+RW-R+RW-R+RW-R+RW-R+RW-G+RW-G+RW-G+RW-G+RW-R.litmus ├── C-RW-G+RW-G+RW-R+RW-R+RW-R+RW-R+RW-G+RW-G+RW-G+RW-G+RW-R+RW-R+RW-R+RW-R+RW-G+RW-G+RW-G+RW-G.litmus ├── C-RW-G+RW-G+RW-R+RW-R+RW-R+RW-R+RW-G+RW-G+RW-G+RW-G+RW-R+RW-R+RW-R+RW-R+RW-G+RW-G+RW-G+RW-R+RW-G.litmus ├── C-RW-G+RW-G+RW-R+RW-R+RW-R+RW-R+RW-G+RW-G+RW-G+RW-G+RW-R+RW-R+RW-R+RW-R+RW-G+RW-G+RW-G+RW-R+RW-R.litmus ├── C-RW-G+RW-G+RW-R+RW-R+RW-R+RW-R+RW-G+RW-G+RW-G+RW-G+RW-R+RW-R+RW-R+RW-R+RW-G+RW-G+RW-G+RW-R.litmus ├── C-RW-G+RW-G+RW-R+RW-R+RW-R+RW-R+RW-G+RW-G+RW-G+RW-G+RW-R+RW-R+RW-R+RW-R+RW-G+RW-G+RW-G.litmus ├── C-RW-G+RW-G+RW-R+RW-R+RW-R+RW-R+RW-G+RW-G+RW-G+RW-G+RW-R+RW-R+RW-R+RW-R+RW-G+RW-G+RW-R+RW-G+RW-G.litmus ├── C-RW-G+RW-G+RW-R+RW-R+RW-R+RW-R+RW-G+RW-G+RW-G+RW-G+RW-R+RW-R+RW-R+RW-R+RW-G+RW-G+RW-R+RW-G+RW-R.litmus ├── C-RW-G+RW-G+RW-R+RW-R+RW-R+RW-R+RW-G+RW-G+RW-G+RW-G+RW-R+RW-R+RW-R+RW-R+RW-G+RW-G+RW-R+RW-G.litmus ├── C-RW-G+RW-G+RW-R+RW-R+RW-R+RW-R+RW-G+RW-G+RW-G+RW-G+RW-R+RW-R+RW-R+RW-R+RW-G+RW-G+RW-R+RW-R+RW-G.litmus ├── C-RW-G+RW-G+RW-R+RW-R+RW-R+RW-R+RW-G+RW-G+RW-G+RW-G+RW-R+RW-R+RW-R+RW-R+RW-G+RW-G+RW-R+RW-R+RW-R.litmus ├── C-RW-G+RW-G+RW-R+RW-R+RW-R+RW-R+RW-G+RW-G+RW-G+RW-G+RW-R+RW-R+RW-R+RW-R+RW-G+RW-G+RW-R+RW-R.litmus ├── C-RW-G+RW-G+RW-R+RW-R+RW-R+RW-R+RW-G+RW-G+RW-G+RW-G+RW-R+RW-R+RW-R+RW-R+RW-G+RW-G+RW-R.litmus ├── C-RW-G+RW-G+RW-R+RW-R+RW-R+RW-R+RW-G+RW-G+RW-G+RW-G+RW-R+RW-R+RW-R+RW-R+RW-G+RW-G.litmus ├── C-RW-G+RW-G+RW-R+RW-R+RW-R+RW-R+RW-G+RW-G+RW-G+RW-G+RW-R+RW-R.litmus ├── C-RW-G+RW-G+RW-R+RW-R+RW-R+RW-R+RW-G+RW-G+RW-G+RW-G+RW-R.litmus ├── C-RW-G+RW-G+RW-R+RW-R+RW-R+RW-R+RW-G+RW-G+RW-G+RW-G.litmus ├── C-RW-G+RW-G+RW-R+RW-R+RW-R+RW-R+RW-G+RW-G+RW-G+RW-R+RW-G+RW-G+RW-R+RW-R+RW-R+RW-R+RW-G+RW-G+RW-G.litmus ├── C-RW-G+RW-G+RW-R+RW-R+RW-R+RW-R+RW-G+RW-G+RW-G+RW-R+RW-G+RW-G.litmus ├── C-RW-G+RW-G+RW-R+RW-R+RW-R+RW-R+RW-G+RW-G+RW-G+RW-R+RW-G+RW-R.litmus ├── C-RW-G+RW-G+RW-R+RW-R+RW-R+RW-R+RW-G+RW-G+RW-G+RW-R+RW-G.litmus ├── C-RW-G+RW-G+RW-R+RW-R+RW-R+RW-R+RW-G+RW-G+RW-G+RW-R+RW-R+RW-G.litmus ├── C-RW-G+RW-G+RW-R+RW-R+RW-R+RW-R+RW-G+RW-G+RW-G+RW-R+RW-R+RW-R.litmus ├── C-RW-G+RW-G+RW-R+RW-R+RW-R+RW-R+RW-G+RW-G+RW-G+RW-R+RW-R.litmus ├── C-RW-G+RW-G+RW-R+RW-R+RW-R+RW-R+RW-G+RW-G+RW-G+RW-R.litmus ├── C-RW-G+RW-G+RW-R+RW-R+RW-R+RW-R+RW-G+RW-G+RW-G.litmus ├── C-RW-G+RW-G+RW-R+RW-R+RW-R+RW-R+RW-G+RW-G+RW-R+RW-G+RW-G+RW-G.litmus ├── C-RW-G+RW-G+RW-R+RW-R+RW-R+RW-R+RW-G+RW-G+RW-R+RW-G+RW-G+RW-R+RW-R+RW-R+RW-R+RW-G+RW-G+RW-G+RW-G.litmus ├── C-RW-G+RW-G+RW-R+RW-R+RW-R+RW-R+RW-G+RW-G+RW-R+RW-G+RW-G+RW-R+RW-R+RW-R+RW-R+RW-G+RW-G+RW-G+RW-R.litmus ├── C-RW-G+RW-G+RW-R+RW-R+RW-R+RW-R+RW-G+RW-G+RW-R+RW-G+RW-G+RW-R+RW-R+RW-R+RW-R+RW-G+RW-G+RW-G.litmus ├── C-RW-G+RW-G+RW-R+RW-R+RW-R+RW-R+RW-G+RW-G+RW-R+RW-G+RW-G+RW-R+RW-R+RW-R+RW-R+RW-G+RW-G+RW-R+RW-G.litmus ├── C-RW-G+RW-G+RW-R+RW-R+RW-R+RW-R+RW-G+RW-G+RW-R+RW-G+RW-G+RW-R+RW-R+RW-R+RW-R+RW-G+RW-G+RW-R.litmus ├── C-RW-G+RW-G+RW-R+RW-R+RW-R+RW-R+RW-G+RW-G+RW-R+RW-G+RW-G+RW-R.litmus ├── C-RW-G+RW-G+RW-R+RW-R+RW-R+RW-R+RW-G+RW-G+RW-R+RW-G+RW-G.litmus ├── C-RW-G+RW-G+RW-R+RW-R+RW-R+RW-R+RW-G+RW-G+RW-R+RW-G+RW-R+RW-G.litmus ├── C-RW-G+RW-G+RW-R+RW-R+RW-R+RW-R+RW-G+RW-G+RW-R+RW-G+RW-R+RW-R.litmus ├── C-RW-G+RW-G+RW-R+RW-R+RW-R+RW-R+RW-G+RW-G+RW-R+RW-G+RW-R.litmus ├── C-RW-G+RW-G+RW-R+RW-R+RW-R+RW-R+RW-G+RW-G+RW-R+RW-G.litmus ├── C-RW-G+RW-G+RW-R+RW-R+RW-R+RW-R+RW-G+RW-G+RW-R+RW-R+RW-G+RW-G+RW-R+RW-R+RW-R+RW-R+RW-G+RW-G+RW-G.litmus ├── C-RW-G+RW-G+RW-R+RW-R+RW-R+RW-R+RW-G+RW-G+RW-R+RW-R+RW-G+RW-G+RW-R+RW-R+RW-R+RW-R+RW-G+RW-G+RW-R.litmus ├── C-RW-G+RW-G+RW-R+RW-R+RW-R+RW-R+RW-G+RW-G+RW-R+RW-R+RW-G+RW-G.litmus ├── C-RW-G+RW-G+RW-R+RW-R+RW-R+RW-R+RW-G+RW-G+RW-R+RW-R+RW-G+RW-R.litmus ├── C-RW-G+RW-G+RW-R+RW-R+RW-R+RW-R+RW-G+RW-G+RW-R+RW-R+RW-G.litmus ├── C-RW-G+RW-G+RW-R+RW-R+RW-R+RW-R+RW-G+RW-G+RW-R+RW-R+RW-R+RW-G.litmus ├── C-RW-G+RW-G+RW-R+RW-R+RW-R+RW-R+RW-G+RW-G+RW-R+RW-R+RW-R+RW-R.litmus ├── C-RW-G+RW-G+RW-R+RW-R+RW-R+RW-R+RW-G+RW-G+RW-R+RW-R+RW-R.litmus ├── C-RW-G+RW-G+RW-R+RW-R+RW-R+RW-R+RW-G+RW-G+RW-R+RW-R.litmus ├── C-RW-G+RW-G+RW-R+RW-R+RW-R+RW-R+RW-G+RW-G+RW-R.litmus ├── C-RW-G+RW-G+RW-R+RW-R+RW-R+RW-R+RW-G+RW-G.litmus ├── C-RW-G+RW-G+RW-R+RW-R+RW-R+RW-R+RW-R+RW-R.litmus ├── C-RW-G+RW-G+RW-R+RW-R+RW-R+RW-R+RW-R.litmus ├── C-RW-G+RW-G+RW-R+RW-R+RW-R+RW-R.litmus ├── C-RW-G+RW-G+RW-R+RW-R+RW-R.litmus ├── C-RW-G+RW-G+RW-R+RW-R.litmus ├── C-RW-G+RW-G+RW-R.litmus ├── C-RW-G+RW-G+RW-R1+RW-R1.litmus ├── C-RW-G+RW-G+RW-R1.litmus ├── C-RW-G+RW-G+RW-R1I+RW-R1I.litmus ├── C-RW-G+RW-G+RW-R1I.litmus ├── C-RW-G+RW-G+RW-R2+RW-R2.litmus ├── C-RW-G+RW-G+RW-R2.litmus ├── C-RW-G+RW-G+RW-R2I+RW-R2I.litmus ├── C-RW-G+RW-G+RW-R2I.litmus ├── C-RW-G+RW-G+RW-R3+RW-R3.litmus ├── C-RW-G+RW-G+RW-R3.litmus ├── C-RW-G+RW-G+RW-R3I+RW-R3I.litmus ├── C-RW-G+RW-G+RW-R3I.litmus ├── C-RW-G+RW-G+RW-RB+RW-G+RW-G+RW-G+RW-R+RW-R.litmus ├── C-RW-G+RW-G+RW-RB+RW-G+RW-G+RW-R+RW-R+RW-R.litmus ├── C-RW-G+RW-G+RW-RB+RW-G+RW-G+RW-R+RW-R.litmus ├── C-RW-G+RW-G+RW-RB+RW-G+RW-G+RW-R.litmus ├── C-RW-G+RW-G+RW-RB+RW-R+RW-G+RW-G+RW-R+RW-R.litmus ├── C-RW-G+RW-G+RW-RB+RW-R+RW-R+RW-R+RW-R+RW-R.litmus ├── C-RW-G+RW-G+RW-RB+RW-R+RW-R+RW-R+RW-R.litmus ├── C-RW-G+RW-G+RW-RB+RW-R+RW-R+RW-R.litmus ├── C-RW-G+RW-G+RW-RB+RW-R+RW-R.litmus ├── C-RW-G+RW-G+RW-RB+RW-R.litmus ├── C-RW-G+RW-G+RW-RB.litmus ├── C-RW-G+RW-G+RW-RI+RW-G+RW-G+RW-G+RW-RI+RW-RI.litmus ├── C-RW-G+RW-G+RW-RI+RW-G+RW-G+RW-RI+RW-RI+RW-RI.litmus ├── C-RW-G+RW-G+RW-RI+RW-G+RW-G+RW-RI+RW-RI.litmus ├── C-RW-G+RW-G+RW-RI+RW-G+RW-G+RW-RI.litmus ├── C-RW-G+RW-G+RW-RI+RW-RI+RW-G+RW-G+RW-RI+RW-RI.litmus ├── C-RW-G+RW-G+RW-RI+RW-RI+RW-RI+RW-RI+RW-RI+RW-RI.litmus ├── C-RW-G+RW-G+RW-RI+RW-RI+RW-RI+RW-RI+RW-RI.litmus ├── C-RW-G+RW-G+RW-RI+RW-RI+RW-RI+RW-RI.litmus ├── C-RW-G+RW-G+RW-RI+RW-RI+RW-RI.litmus ├── C-RW-G+RW-G+RW-RI+RW-RI.litmus ├── C-RW-G+RW-G+RW-RI.litmus ├── C-RW-G+RW-G+RW-Rr+RW-RC+RW-G+RW-G+RW-R+RW-R.litmus ├── C-RW-G+RW-G+RW-Rr+RW-RC+RW-R+RW-R+RW-R+RW-R.litmus ├── C-RW-G+RW-G+RW-Rr+RW-RC+RW-R+RW-R+RW-R.litmus ├── C-RW-G+RW-G+RW-Rr+RW-RC+RW-R+RW-R.litmus ├── C-RW-G+RW-G+RW-Rr+RW-RC+RW-R.litmus ├── C-RW-G+RW-G+RW-Rr+RW-RC.litmus ├── C-RW-G+RW-G+RW-Rr+RW-Ra+RW-G+RW-G+RW-R+RW-R.litmus ├── C-RW-G+RW-G+RW-Rr+RW-Ra+RW-R+RW-R+RW-R+RW-R.litmus ├── C-RW-G+RW-G+RW-Rr+RW-Ra+RW-R+RW-R+RW-R.litmus ├── C-RW-G+RW-G+RW-Rr+RW-Ra+RW-R+RW-R.litmus ├── C-RW-G+RW-G+RW-Rr+RW-Ra+RW-R.litmus ├── C-RW-G+RW-G+RW-Rr+RW-Ra.litmus ├── C-RW-G+RW-G+RW-Rrd+RW-CD+RW-G+RW-G+RW-R+RW-R.litmus ├── C-RW-G+RW-G+RW-Rrd+RW-CD+RW-R+RW-R+RW-R+RW-R.litmus ├── C-RW-G+RW-G+RW-Rrd+RW-CD+RW-R+RW-R+RW-R.litmus ├── C-RW-G+RW-G+RW-Rrd+RW-CD+RW-R+RW-R.litmus ├── C-RW-G+RW-G+RW-Rrd+RW-CD+RW-R.litmus ├── C-RW-G+RW-G+RW-Rrd+RW-CD.litmus ├── C-RW-G+RW-G+RW-Rrd+RW-D+RW-G+RW-G+RW-R+RW-R.litmus ├── C-RW-G+RW-G+RW-Rrd+RW-D+RW-R+RW-R+RW-R+RW-R.litmus ├── C-RW-G+RW-G+RW-Rrd+RW-D+RW-R+RW-R+RW-R.litmus ├── C-RW-G+RW-G+RW-Rrd+RW-D+RW-R+RW-R.litmus ├── C-RW-G+RW-G+RW-Rrd+RW-D+RW-R.litmus ├── C-RW-G+RW-G+RW-Rrd+RW-D.litmus ├── C-RW-G+RW-G+RW-Rs+RW-RCD+RW-G+RW-G+RW-R+RW-R.litmus ├── C-RW-G+RW-G+RW-Rs+RW-RCD+RW-R+RW-R+RW-R+RW-R.litmus ├── C-RW-G+RW-G+RW-Rs+RW-RCD+RW-R+RW-R+RW-R.litmus ├── C-RW-G+RW-G+RW-Rs+RW-RCD+RW-R+RW-R.litmus ├── C-RW-G+RW-G+RW-Rs+RW-RCD+RW-R.litmus ├── C-RW-G+RW-G+RW-Rs+RW-RCD.litmus ├── C-RW-G+RW-G+RW-Rs+RW-RD+RW-G+RW-G+RW-R+RW-R.litmus ├── C-RW-G+RW-G+RW-Rs+RW-RD+RW-R+RW-R+RW-R+RW-R.litmus ├── C-RW-G+RW-G+RW-Rs+RW-RD+RW-R+RW-R+RW-R.litmus ├── C-RW-G+RW-G+RW-Rs+RW-RD+RW-R+RW-R.litmus ├── C-RW-G+RW-G+RW-Rs+RW-RD+RW-R.litmus ├── C-RW-G+RW-G+RW-Rs+RW-RD.litmus ├── C-RW-G+RW-G+RW-r+RW-C+RW-B+RW-B+RW-B+RW-B.litmus ├── C-RW-G+RW-G+RW-r+RW-C+RW-B+RW-B+RW-B.litmus ├── C-RW-G+RW-G+RW-r+RW-C+RW-B+RW-B.litmus ├── C-RW-G+RW-G+RW-r+RW-C+RW-B.litmus ├── C-RW-G+RW-G+RW-r+RW-C+RW-G+RW-G+RW-B+RW-B.litmus ├── C-RW-G+RW-G+RW-r+RW-C.litmus ├── C-RW-G+RW-G+RW-r+RW-a+RW-B+RW-B+RW-B+RW-B.litmus ├── C-RW-G+RW-G+RW-r+RW-a+RW-B+RW-B+RW-B.litmus ├── C-RW-G+RW-G+RW-r+RW-a+RW-B+RW-B.litmus ├── C-RW-G+RW-G+RW-r+RW-a+RW-B.litmus ├── C-RW-G+RW-G+RW-r+RW-a+RW-G+RW-G+RW-B+RW-B.litmus ├── C-RW-G+RW-G+RW-r+RW-a.litmus ├── C-RW-G+RW-G.litmus ├── C-RW-G+RW-R+RW-G+RW-G+RW-G+RW-G+RW-G+RW-R.litmus ├── C-RW-G+RW-R+RW-G+RW-G+RW-G+RW-G+RW-R+RW-R.litmus ├── C-RW-G+RW-R+RW-G+RW-G+RW-G+RW-G+RW-R.litmus ├── C-RW-G+RW-R+RW-G+RW-G+RW-G+RW-G+RW-Rr+RW-RC.litmus ├── C-RW-G+RW-R+RW-G+RW-G+RW-G+RW-G+RW-Rr+RW-Ra.litmus ├── C-RW-G+RW-R+RW-G+RW-G+RW-G+RW-G+RW-Rrd+RW-CD.litmus ├── C-RW-G+RW-R+RW-G+RW-G+RW-G+RW-G+RW-Rrd+RW-D.litmus ├── C-RW-G+RW-R+RW-G+RW-G+RW-G+RW-G+RW-Rs+RW-RCD.litmus ├── C-RW-G+RW-R+RW-G+RW-G+RW-G+RW-G+RW-Rs+RW-RD.litmus ├── C-RW-G+RW-R+RW-G+RW-G+RW-G+RW-R+RW-R+RW-R.litmus ├── C-RW-G+RW-R+RW-G+RW-G+RW-G+RW-R+RW-R.litmus ├── C-RW-G+RW-R+RW-G+RW-G+RW-G+RW-R.litmus ├── C-RW-G+RW-R+RW-G+RW-G+RW-G+RW-Rr+RW-RC+RW-R.litmus ├── C-RW-G+RW-R+RW-G+RW-G+RW-G+RW-Rr+RW-RC.litmus ├── C-RW-G+RW-R+RW-G+RW-G+RW-G+RW-Rr+RW-Ra+RW-R.litmus ├── C-RW-G+RW-R+RW-G+RW-G+RW-G+RW-Rr+RW-Ra.litmus ├── C-RW-G+RW-R+RW-G+RW-G+RW-G+RW-Rrd+RW-CD+RW-R.litmus ├── C-RW-G+RW-R+RW-G+RW-G+RW-G+RW-Rrd+RW-CD.litmus ├── C-RW-G+RW-R+RW-G+RW-G+RW-G+RW-Rrd+RW-D+RW-R.litmus ├── C-RW-G+RW-R+RW-G+RW-G+RW-G+RW-Rrd+RW-D.litmus ├── C-RW-G+RW-R+RW-G+RW-G+RW-G+RW-Rs+RW-RCD+RW-R.litmus ├── C-RW-G+RW-R+RW-G+RW-G+RW-G+RW-Rs+RW-RCD.litmus ├── C-RW-G+RW-R+RW-G+RW-G+RW-G+RW-Rs+RW-RD+RW-R.litmus ├── C-RW-G+RW-R+RW-G+RW-G+RW-G+RW-Rs+RW-RD.litmus ├── C-RW-G+RW-R+RW-G+RW-G+RW-R+RW-G+RW-G+RW-R.litmus ├── C-RW-G+RW-R+RW-G+RW-G+RW-R+RW-R+RW-R+RW-R.litmus ├── C-RW-G+RW-R+RW-G+RW-G+RW-R+RW-R+RW-R.litmus ├── C-RW-G+RW-R+RW-G+RW-G+RW-R+RW-R.litmus ├── C-RW-G+RW-R+RW-G+RW-G+RW-R.litmus ├── C-RW-G+RW-R+RW-G+RW-G+RW-Rr+RW-RC+RW-R+RW-R.litmus ├── C-RW-G+RW-R+RW-G+RW-G+RW-Rr+RW-RC+RW-R.litmus ├── C-RW-G+RW-R+RW-G+RW-G+RW-Rr+RW-RC.litmus ├── C-RW-G+RW-R+RW-G+RW-G+RW-Rr+RW-Ra+RW-R+RW-R.litmus ├── C-RW-G+RW-R+RW-G+RW-G+RW-Rr+RW-Ra+RW-R.litmus ├── C-RW-G+RW-R+RW-G+RW-G+RW-Rr+RW-Ra.litmus ├── C-RW-G+RW-R+RW-G+RW-G+RW-Rrd+RW-CD+RW-R+RW-R.litmus ├── C-RW-G+RW-R+RW-G+RW-G+RW-Rrd+RW-CD+RW-R.litmus ├── C-RW-G+RW-R+RW-G+RW-G+RW-Rrd+RW-CD.litmus ├── C-RW-G+RW-R+RW-G+RW-G+RW-Rrd+RW-D+RW-R+RW-R.litmus ├── C-RW-G+RW-R+RW-G+RW-G+RW-Rrd+RW-D+RW-R.litmus ├── C-RW-G+RW-R+RW-G+RW-G+RW-Rrd+RW-D.litmus ├── C-RW-G+RW-R+RW-G+RW-G+RW-Rs+RW-RCD+RW-R+RW-R.litmus ├── C-RW-G+RW-R+RW-G+RW-G+RW-Rs+RW-RCD+RW-R.litmus ├── C-RW-G+RW-R+RW-G+RW-G+RW-Rs+RW-RCD.litmus ├── C-RW-G+RW-R+RW-G+RW-G+RW-Rs+RW-RD+RW-R+RW-R.litmus ├── C-RW-G+RW-R+RW-G+RW-G+RW-Rs+RW-RD+RW-R.litmus ├── C-RW-G+RW-R+RW-G+RW-G+RW-Rs+RW-RD.litmus ├── C-RW-G+RW-R+RW-G+RW-R+RW-G+RW-G+RW-G+RW-R.litmus ├── C-RW-G+RW-R+RW-G+RW-R+RW-G+RW-G+RW-R+RW-R.litmus ├── C-RW-G+RW-R+RW-G+RW-R+RW-G+RW-G+RW-R.litmus ├── C-RW-G+RW-R+RW-G+RW-R+RW-G+RW-G+RW-Rr+RW-RC.litmus ├── C-RW-G+RW-R+RW-G+RW-R+RW-G+RW-G+RW-Rr+RW-Ra.litmus ├── C-RW-G+RW-R+RW-G+RW-R+RW-G+RW-G+RW-Rrd+RW-CD.litmus ├── C-RW-G+RW-R+RW-G+RW-R+RW-G+RW-G+RW-Rrd+RW-D.litmus ├── C-RW-G+RW-R+RW-G+RW-R+RW-G+RW-G+RW-Rs+RW-RCD.litmus ├── C-RW-G+RW-R+RW-G+RW-R+RW-G+RW-G+RW-Rs+RW-RD.litmus ├── C-RW-G+RW-R+RW-G+RW-R+RW-G+RW-R+RW-G+RW-R+RW-G+RW-R+RW-G+RW-R+RW-G+RW-R+RW-G+RW-R+RW-G+RW-R.litmus ├── C-RW-G+RW-R+RW-G+RW-R+RW-G+RW-R+RW-G+RW-R+RW-G+RW-R+RW-G+RW-R+RW-G+RW-R+RW-G+RW-R.litmus ├── C-RW-G+RW-R+RW-G+RW-R+RW-G+RW-R+RW-G+RW-R+RW-G+RW-R+RW-G+RW-R+RW-G+RW-R.litmus ├── C-RW-G+RW-R+RW-G+RW-R+RW-G+RW-R+RW-G+RW-R+RW-G+RW-R+RW-G+RW-R.litmus ├── C-RW-G+RW-R+RW-G+RW-R+RW-G+RW-R+RW-G+RW-R+RW-G+RW-R.litmus ├── C-RW-G+RW-R+RW-G+RW-R+RW-G+RW-R+RW-G+RW-R.litmus ├── C-RW-G+RW-R+RW-G+RW-R+RW-G+RW-R.litmus ├── C-RW-G+RW-R+RW-G+RW-R+RW-R+RW-G+RW-G+RW-R.litmus ├── C-RW-G+RW-R+RW-G+RW-R+RW-R+RW-G+RW-R.litmus ├── C-RW-G+RW-R+RW-G+RW-R+RW-R+RW-R+RW-G+RW-R.litmus ├── C-RW-G+RW-R+RW-G+RW-R.litmus ├── C-RW-G+RW-R+RW-G+RW-Rr+RW-RC+RW-G+RW-G+RW-R.litmus ├── C-RW-G+RW-R+RW-G+RW-Rr+RW-RC+RW-G+RW-R.litmus ├── C-RW-G+RW-R+RW-G+RW-Rr+RW-RC+RW-R+RW-G+RW-R.litmus ├── C-RW-G+RW-R+RW-G+RW-Rr+RW-Ra+RW-G+RW-G+RW-R.litmus ├── C-RW-G+RW-R+RW-G+RW-Rr+RW-Ra+RW-G+RW-R.litmus ├── C-RW-G+RW-R+RW-G+RW-Rr+RW-Ra+RW-R+RW-G+RW-R.litmus ├── C-RW-G+RW-R+RW-G+RW-Rrd+RW-CD+RW-G+RW-G+RW-R.litmus ├── C-RW-G+RW-R+RW-G+RW-Rrd+RW-CD+RW-G+RW-R.litmus ├── C-RW-G+RW-R+RW-G+RW-Rrd+RW-CD+RW-R+RW-G+RW-R.litmus ├── C-RW-G+RW-R+RW-G+RW-Rrd+RW-D+RW-G+RW-G+RW-R.litmus ├── C-RW-G+RW-R+RW-G+RW-Rrd+RW-D+RW-G+RW-R.litmus ├── C-RW-G+RW-R+RW-G+RW-Rrd+RW-D+RW-R+RW-G+RW-R.litmus ├── C-RW-G+RW-R+RW-G+RW-Rs+RW-RCD+RW-G+RW-G+RW-R.litmus ├── C-RW-G+RW-R+RW-G+RW-Rs+RW-RCD+RW-G+RW-R.litmus ├── C-RW-G+RW-R+RW-G+RW-Rs+RW-RCD+RW-R+RW-G+RW-R.litmus ├── C-RW-G+RW-R+RW-G+RW-Rs+RW-RD+RW-G+RW-G+RW-R.litmus ├── C-RW-G+RW-R+RW-G+RW-Rs+RW-RD+RW-G+RW-R.litmus ├── C-RW-G+RW-R+RW-G+RW-Rs+RW-RD+RW-R+RW-G+RW-R.litmus ├── C-RW-G+RW-R+RW-R+RW-G+RW-G+RW-G+RW-G+RW-R.litmus ├── C-RW-G+RW-R+RW-R+RW-G+RW-G+RW-G+RW-R+RW-R.litmus ├── C-RW-G+RW-R+RW-R+RW-G+RW-G+RW-G+RW-R.litmus ├── C-RW-G+RW-R+RW-R+RW-G+RW-G+RW-R+RW-R+RW-R.litmus ├── C-RW-G+RW-R+RW-R+RW-G+RW-G+RW-R+RW-R.litmus ├── C-RW-G+RW-R+RW-R+RW-G+RW-G+RW-R.litmus ├── C-RW-G+RW-R+RW-R+RW-G+RW-R+RW-G+RW-G+RW-R.litmus ├── C-RW-G+RW-R+RW-R+RW-G+RW-R+RW-R+RW-G+RW-R.litmus ├── C-RW-G+RW-R+RW-R+RW-G+RW-R+RW-R.litmus ├── C-RW-G+RW-R+RW-R+RW-G+RW-R.litmus ├── C-RW-G+RW-R+RW-R+RW-R+RW-G+RW-G+RW-G+RW-R.litmus ├── C-RW-G+RW-R+RW-R+RW-R+RW-G+RW-G+RW-R+RW-R.litmus ├── C-RW-G+RW-R+RW-R+RW-R+RW-G+RW-G+RW-R.litmus ├── C-RW-G+RW-R+RW-R+RW-R+RW-G+RW-R+RW-R+RW-R.litmus ├── C-RW-G+RW-R+RW-R+RW-R+RW-G+RW-R+RW-R.litmus ├── C-RW-G+RW-R+RW-R+RW-R+RW-G+RW-R.litmus ├── C-RW-G+RW-R+RW-R+RW-R+RW-R+RW-G+RW-G+RW-R.litmus ├── C-RW-G+RW-R+RW-R+RW-R+RW-R+RW-G+RW-R+RW-R.litmus ├── C-RW-G+RW-R+RW-R+RW-R+RW-R+RW-G+RW-R.litmus ├── C-RW-G+RW-R+RW-R+RW-R+RW-R+RW-R+RW-G+RW-R.litmus ├── C-RW-G+RW-R+RW-R+RW-R+RW-R+RW-R+RW-R+RW-R.litmus ├── C-RW-G+RW-R+RW-R+RW-R+RW-R+RW-R+RW-R.litmus ├── C-RW-G+RW-R+RW-R+RW-R+RW-R+RW-R.litmus ├── C-RW-G+RW-R+RW-R+RW-R+RW-R.litmus ├── C-RW-G+RW-R+RW-R+RW-R.litmus ├── C-RW-G+RW-R+RW-R.litmus ├── C-RW-G+RW-R.litmus ├── C-RW-G+RW-R1+RW-G+RW-R1.litmus ├── C-RW-G+RW-R1+RW-R1+RW-R1.litmus ├── C-RW-G+RW-R1+RW-R1.litmus ├── C-RW-G+RW-R1.litmus ├── C-RW-G+RW-R1I+RW-G+RW-R1I.litmus ├── C-RW-G+RW-R1I+RW-R1I+RW-R1I.litmus ├── C-RW-G+RW-R1I+RW-R1I.litmus ├── C-RW-G+RW-R1I.litmus ├── C-RW-G+RW-R2+RW-G+RW-R2.litmus ├── C-RW-G+RW-R2+RW-R2+RW-R2.litmus ├── C-RW-G+RW-R2+RW-R2.litmus ├── C-RW-G+RW-R2.litmus ├── C-RW-G+RW-R2I+RW-G+RW-R2I.litmus ├── C-RW-G+RW-R2I+RW-R2I+RW-R2I.litmus ├── C-RW-G+RW-R2I+RW-R2I.litmus ├── C-RW-G+RW-R2I.litmus ├── C-RW-G+RW-R3+RW-G+RW-R3.litmus ├── C-RW-G+RW-R3+RW-R3+RW-R3.litmus ├── C-RW-G+RW-R3+RW-R3.litmus ├── C-RW-G+RW-R3.litmus ├── C-RW-G+RW-R3I+RW-G+RW-R3I.litmus ├── C-RW-G+RW-R3I+RW-R3I+RW-R3I.litmus ├── C-RW-G+RW-R3I+RW-R3I.litmus ├── C-RW-G+RW-R3I.litmus ├── C-RW-G+RW-RB+RW-G+RW-G+RW-G+RW-G+RW-G+RW-R.litmus ├── C-RW-G+RW-RB+RW-G+RW-G+RW-G+RW-G+RW-R+RW-R.litmus ├── C-RW-G+RW-RB+RW-G+RW-G+RW-G+RW-G+RW-R.litmus ├── C-RW-G+RW-RB+RW-G+RW-G+RW-G+RW-R+RW-R+RW-R.litmus ├── C-RW-G+RW-RB+RW-G+RW-G+RW-G+RW-R+RW-R.litmus ├── C-RW-G+RW-RB+RW-G+RW-G+RW-G+RW-R.litmus ├── C-RW-G+RW-RB+RW-G+RW-G+RW-R+RW-G+RW-G+RW-R.litmus ├── C-RW-G+RW-RB+RW-G+RW-G+RW-R+RW-R+RW-R+RW-R.litmus ├── C-RW-G+RW-RB+RW-G+RW-G+RW-R+RW-R+RW-R.litmus ├── C-RW-G+RW-RB+RW-G+RW-G+RW-R+RW-R.litmus ├── C-RW-G+RW-RB+RW-G+RW-G+RW-R.litmus ├── C-RW-G+RW-RB+RW-G+RW-R+RW-G+RW-G+RW-G+RW-R.litmus ├── C-RW-G+RW-RB+RW-G+RW-R+RW-G+RW-G+RW-R+RW-R.litmus ├── C-RW-G+RW-RB+RW-G+RW-R+RW-G+RW-G+RW-R.litmus ├── C-RW-G+RW-RB+RW-G+RW-R+RW-R+RW-G+RW-G+RW-R.litmus ├── C-RW-G+RW-RB+RW-G+RW-R+RW-R+RW-G+RW-R.litmus ├── C-RW-G+RW-RB+RW-G+RW-R+RW-R+RW-R+RW-G+RW-R.litmus ├── C-RW-G+RW-RB+RW-G+RW-R.litmus ├── C-RW-G+RW-RB+RW-R+RW-G+RW-G+RW-G+RW-G+RW-R.litmus ├── C-RW-G+RW-RB+RW-R+RW-G+RW-G+RW-G+RW-R+RW-R.litmus ├── C-RW-G+RW-RB+RW-R+RW-G+RW-G+RW-G+RW-R.litmus ├── C-RW-G+RW-RB+RW-R+RW-G+RW-G+RW-R+RW-R+RW-R.litmus ├── C-RW-G+RW-RB+RW-R+RW-G+RW-G+RW-R+RW-R.litmus ├── C-RW-G+RW-RB+RW-R+RW-G+RW-G+RW-R.litmus ├── C-RW-G+RW-RB+RW-R+RW-G+RW-R+RW-G+RW-G+RW-R.litmus ├── C-RW-G+RW-RB+RW-R+RW-G+RW-R+RW-R+RW-G+RW-R.litmus ├── C-RW-G+RW-RB+RW-R+RW-G+RW-R+RW-R.litmus ├── C-RW-G+RW-RB+RW-R+RW-G+RW-R.litmus ├── C-RW-G+RW-RB+RW-R+RW-R+RW-G+RW-G+RW-G+RW-R.litmus ├── C-RW-G+RW-RB+RW-R+RW-R+RW-G+RW-G+RW-R+RW-R.litmus ├── C-RW-G+RW-RB+RW-R+RW-R+RW-G+RW-G+RW-R.litmus ├── C-RW-G+RW-RB+RW-R+RW-R+RW-G+RW-R+RW-R+RW-R.litmus ├── C-RW-G+RW-RB+RW-R+RW-R+RW-G+RW-R+RW-R.litmus ├── C-RW-G+RW-RB+RW-R+RW-R+RW-G+RW-R.litmus ├── C-RW-G+RW-RB+RW-R+RW-R+RW-R+RW-G+RW-G+RW-R.litmus ├── C-RW-G+RW-RB+RW-R+RW-R+RW-R+RW-G+RW-R+RW-R.litmus ├── C-RW-G+RW-RB+RW-R+RW-R+RW-R+RW-G+RW-R.litmus ├── C-RW-G+RW-RB+RW-R+RW-R+RW-R+RW-R+RW-G+RW-R.litmus ├── C-RW-G+RW-RB+RW-R+RW-R+RW-R+RW-R+RW-R+RW-R.litmus ├── C-RW-G+RW-RB+RW-R+RW-R+RW-R+RW-R+RW-R.litmus ├── C-RW-G+RW-RB+RW-R+RW-R+RW-R+RW-R.litmus ├── C-RW-G+RW-RB+RW-R+RW-R+RW-R.litmus ├── C-RW-G+RW-RB+RW-R+RW-R.litmus ├── C-RW-G+RW-RB+RW-R.litmus ├── C-RW-G+RW-RB.litmus ├── C-RW-G+RW-RI+RW-G+RW-G+RW-G+RW-G+RW-G+RW-RI.litmus ├── C-RW-G+RW-RI+RW-G+RW-G+RW-G+RW-G+RW-RI+RW-RI.litmus ├── C-RW-G+RW-RI+RW-G+RW-G+RW-G+RW-G+RW-RI.litmus ├── C-RW-G+RW-RI+RW-G+RW-G+RW-G+RW-RI+RW-RI+RW-RI.litmus ├── C-RW-G+RW-RI+RW-G+RW-G+RW-G+RW-RI+RW-RI.litmus ├── C-RW-G+RW-RI+RW-G+RW-G+RW-G+RW-RI.litmus ├── C-RW-G+RW-RI+RW-G+RW-G+RW-RI+RW-G+RW-G+RW-RI.litmus ├── C-RW-G+RW-RI+RW-G+RW-G+RW-RI+RW-RI+RW-RI+RW-RI.litmus ├── C-RW-G+RW-RI+RW-G+RW-G+RW-RI+RW-RI+RW-RI.litmus ├── C-RW-G+RW-RI+RW-G+RW-G+RW-RI+RW-RI.litmus ├── C-RW-G+RW-RI+RW-G+RW-G+RW-RI.litmus ├── C-RW-G+RW-RI+RW-G+RW-RI+RW-G+RW-G+RW-G+RW-RI.litmus ├── C-RW-G+RW-RI+RW-G+RW-RI+RW-G+RW-G+RW-RI+RW-RI.litmus ├── C-RW-G+RW-RI+RW-G+RW-RI+RW-G+RW-G+RW-RI.litmus ├── C-RW-G+RW-RI+RW-G+RW-RI+RW-RI+RW-G+RW-G+RW-RI.litmus ├── C-RW-G+RW-RI+RW-G+RW-RI+RW-RI+RW-G+RW-RI.litmus ├── C-RW-G+RW-RI+RW-G+RW-RI+RW-RI+RW-RI+RW-G+RW-RI.litmus ├── C-RW-G+RW-RI+RW-G+RW-RI.litmus ├── C-RW-G+RW-RI+RW-RI+RW-G+RW-G+RW-G+RW-G+RW-RI.litmus ├── C-RW-G+RW-RI+RW-RI+RW-G+RW-G+RW-G+RW-RI+RW-RI.litmus ├── C-RW-G+RW-RI+RW-RI+RW-G+RW-G+RW-G+RW-RI.litmus ├── C-RW-G+RW-RI+RW-RI+RW-G+RW-G+RW-RI+RW-RI+RW-RI.litmus ├── C-RW-G+RW-RI+RW-RI+RW-G+RW-G+RW-RI+RW-RI.litmus ├── C-RW-G+RW-RI+RW-RI+RW-G+RW-G+RW-RI.litmus ├── C-RW-G+RW-RI+RW-RI+RW-G+RW-RI+RW-G+RW-G+RW-RI.litmus ├── C-RW-G+RW-RI+RW-RI+RW-G+RW-RI+RW-RI+RW-G+RW-RI.litmus ├── C-RW-G+RW-RI+RW-RI+RW-G+RW-RI+RW-RI.litmus ├── C-RW-G+RW-RI+RW-RI+RW-G+RW-RI.litmus ├── C-RW-G+RW-RI+RW-RI+RW-RI+RW-G+RW-G+RW-G+RW-RI.litmus ├── C-RW-G+RW-RI+RW-RI+RW-RI+RW-G+RW-G+RW-RI+RW-RI.litmus ├── C-RW-G+RW-RI+RW-RI+RW-RI+RW-G+RW-G+RW-RI.litmus ├── C-RW-G+RW-RI+RW-RI+RW-RI+RW-G+RW-RI+RW-RI+RW-RI.litmus ├── C-RW-G+RW-RI+RW-RI+RW-RI+RW-G+RW-RI+RW-RI.litmus ├── C-RW-G+RW-RI+RW-RI+RW-RI+RW-G+RW-RI.litmus ├── C-RW-G+RW-RI+RW-RI+RW-RI+RW-RI+RW-G+RW-G+RW-RI.litmus ├── C-RW-G+RW-RI+RW-RI+RW-RI+RW-RI+RW-G+RW-RI+RW-RI.litmus ├── C-RW-G+RW-RI+RW-RI+RW-RI+RW-RI+RW-G+RW-RI.litmus ├── C-RW-G+RW-RI+RW-RI+RW-RI+RW-RI+RW-RI+RW-G+RW-RI.litmus ├── C-RW-G+RW-RI+RW-RI+RW-RI+RW-RI+RW-RI+RW-RI+RW-RI.litmus ├── C-RW-G+RW-RI+RW-RI+RW-RI+RW-RI+RW-RI+RW-RI.litmus ├── C-RW-G+RW-RI+RW-RI+RW-RI+RW-RI+RW-RI.litmus ├── C-RW-G+RW-RI+RW-RI+RW-RI+RW-RI.litmus ├── C-RW-G+RW-RI+RW-RI+RW-RI.litmus ├── C-RW-G+RW-RI+RW-RI.litmus ├── C-RW-G+RW-RI.litmus ├── C-RW-G+RW-Rr+RW-RC+RW-G+RW-G+RW-G+RW-G+RW-R.litmus ├── C-RW-G+RW-Rr+RW-RC+RW-G+RW-G+RW-G+RW-R+RW-R.litmus ├── C-RW-G+RW-Rr+RW-RC+RW-G+RW-G+RW-G+RW-R.litmus ├── C-RW-G+RW-Rr+RW-RC+RW-G+RW-G+RW-R+RW-R+RW-R.litmus ├── C-RW-G+RW-Rr+RW-RC+RW-G+RW-G+RW-R+RW-R.litmus ├── C-RW-G+RW-Rr+RW-RC+RW-G+RW-G+RW-R.litmus ├── C-RW-G+RW-Rr+RW-RC+RW-G+RW-R+RW-G+RW-G+RW-R.litmus ├── C-RW-G+RW-Rr+RW-RC+RW-G+RW-R+RW-R+RW-G+RW-R.litmus ├── C-RW-G+RW-Rr+RW-RC+RW-G+RW-R+RW-R.litmus ├── C-RW-G+RW-Rr+RW-RC+RW-G+RW-R.litmus ├── C-RW-G+RW-Rr+RW-RC+RW-R+RW-G+RW-G+RW-G+RW-R.litmus ├── C-RW-G+RW-Rr+RW-RC+RW-R+RW-G+RW-G+RW-R+RW-R.litmus ├── C-RW-G+RW-Rr+RW-RC+RW-R+RW-G+RW-G+RW-R.litmus ├── C-RW-G+RW-Rr+RW-RC+RW-R+RW-G+RW-R+RW-R+RW-R.litmus ├── C-RW-G+RW-Rr+RW-RC+RW-R+RW-G+RW-R+RW-R.litmus ├── C-RW-G+RW-Rr+RW-RC+RW-R+RW-G+RW-R.litmus ├── C-RW-G+RW-Rr+RW-RC+RW-R+RW-R+RW-G+RW-G+RW-R.litmus ├── C-RW-G+RW-Rr+RW-RC+RW-R+RW-R+RW-G+RW-R+RW-R.litmus ├── C-RW-G+RW-Rr+RW-RC+RW-R+RW-R+RW-G+RW-R.litmus ├── C-RW-G+RW-Rr+RW-RC+RW-R+RW-R+RW-R+RW-G+RW-R.litmus ├── C-RW-G+RW-Rr+RW-RC+RW-R+RW-R+RW-R+RW-R+RW-R.litmus ├── C-RW-G+RW-Rr+RW-RC+RW-R+RW-R+RW-R+RW-R.litmus ├── C-RW-G+RW-Rr+RW-RC+RW-R+RW-R+RW-R.litmus ├── C-RW-G+RW-Rr+RW-RC+RW-R+RW-R.litmus ├── C-RW-G+RW-Rr+RW-RC+RW-R.litmus ├── C-RW-G+RW-Rr+RW-RC.litmus ├── C-RW-G+RW-Rr+RW-Ra+RW-G+RW-G+RW-G+RW-G+RW-R.litmus ├── C-RW-G+RW-Rr+RW-Ra+RW-G+RW-G+RW-G+RW-R+RW-R.litmus ├── C-RW-G+RW-Rr+RW-Ra+RW-G+RW-G+RW-G+RW-R.litmus ├── C-RW-G+RW-Rr+RW-Ra+RW-G+RW-G+RW-R+RW-R+RW-R.litmus ├── C-RW-G+RW-Rr+RW-Ra+RW-G+RW-G+RW-R+RW-R.litmus ├── C-RW-G+RW-Rr+RW-Ra+RW-G+RW-G+RW-R.litmus ├── C-RW-G+RW-Rr+RW-Ra+RW-G+RW-R+RW-G+RW-G+RW-R.litmus ├── C-RW-G+RW-Rr+RW-Ra+RW-G+RW-R+RW-R+RW-G+RW-R.litmus ├── C-RW-G+RW-Rr+RW-Ra+RW-G+RW-R+RW-R.litmus ├── C-RW-G+RW-Rr+RW-Ra+RW-G+RW-R.litmus ├── C-RW-G+RW-Rr+RW-Ra+RW-R+RW-G+RW-G+RW-G+RW-R.litmus ├── C-RW-G+RW-Rr+RW-Ra+RW-R+RW-G+RW-G+RW-R+RW-R.litmus ├── C-RW-G+RW-Rr+RW-Ra+RW-R+RW-G+RW-G+RW-R.litmus ├── C-RW-G+RW-Rr+RW-Ra+RW-R+RW-G+RW-R+RW-R+RW-R.litmus ├── C-RW-G+RW-Rr+RW-Ra+RW-R+RW-G+RW-R+RW-R.litmus ├── C-RW-G+RW-Rr+RW-Ra+RW-R+RW-G+RW-R.litmus ├── C-RW-G+RW-Rr+RW-Ra+RW-R+RW-R+RW-G+RW-G+RW-R.litmus ├── C-RW-G+RW-Rr+RW-Ra+RW-R+RW-R+RW-G+RW-R+RW-R.litmus ├── C-RW-G+RW-Rr+RW-Ra+RW-R+RW-R+RW-G+RW-R.litmus ├── C-RW-G+RW-Rr+RW-Ra+RW-R+RW-R+RW-R+RW-G+RW-R.litmus ├── C-RW-G+RW-Rr+RW-Ra+RW-R+RW-R+RW-R+RW-R+RW-R.litmus ├── C-RW-G+RW-Rr+RW-Ra+RW-R+RW-R+RW-R+RW-R.litmus ├── C-RW-G+RW-Rr+RW-Ra+RW-R+RW-R+RW-R.litmus ├── C-RW-G+RW-Rr+RW-Ra+RW-R+RW-R.litmus ├── C-RW-G+RW-Rr+RW-Ra+RW-R.litmus ├── C-RW-G+RW-Rr+RW-Ra.litmus ├── C-RW-G+RW-Rrd+RW-CD+RW-G+RW-G+RW-G+RW-G+RW-R.litmus ├── C-RW-G+RW-Rrd+RW-CD+RW-G+RW-G+RW-G+RW-R+RW-R.litmus ├── C-RW-G+RW-Rrd+RW-CD+RW-G+RW-G+RW-G+RW-R.litmus ├── C-RW-G+RW-Rrd+RW-CD+RW-G+RW-G+RW-R+RW-R+RW-R.litmus ├── C-RW-G+RW-Rrd+RW-CD+RW-G+RW-G+RW-R+RW-R.litmus ├── C-RW-G+RW-Rrd+RW-CD+RW-G+RW-G+RW-R.litmus ├── C-RW-G+RW-Rrd+RW-CD+RW-G+RW-R+RW-G+RW-G+RW-R.litmus ├── C-RW-G+RW-Rrd+RW-CD+RW-G+RW-R+RW-R+RW-G+RW-R.litmus ├── C-RW-G+RW-Rrd+RW-CD+RW-G+RW-R+RW-R.litmus ├── C-RW-G+RW-Rrd+RW-CD+RW-G+RW-R.litmus ├── C-RW-G+RW-Rrd+RW-CD+RW-R+RW-G+RW-G+RW-G+RW-R.litmus ├── C-RW-G+RW-Rrd+RW-CD+RW-R+RW-G+RW-G+RW-R+RW-R.litmus ├── C-RW-G+RW-Rrd+RW-CD+RW-R+RW-G+RW-G+RW-R.litmus ├── C-RW-G+RW-Rrd+RW-CD+RW-R+RW-G+RW-R+RW-R+RW-R.litmus ├── C-RW-G+RW-Rrd+RW-CD+RW-R+RW-G+RW-R+RW-R.litmus ├── C-RW-G+RW-Rrd+RW-CD+RW-R+RW-G+RW-R.litmus ├── C-RW-G+RW-Rrd+RW-CD+RW-R+RW-R+RW-G+RW-G+RW-R.litmus ├── C-RW-G+RW-Rrd+RW-CD+RW-R+RW-R+RW-G+RW-R+RW-R.litmus ├── C-RW-G+RW-Rrd+RW-CD+RW-R+RW-R+RW-G+RW-R.litmus ├── C-RW-G+RW-Rrd+RW-CD+RW-R+RW-R+RW-R+RW-G+RW-R.litmus ├── C-RW-G+RW-Rrd+RW-CD+RW-R+RW-R+RW-R+RW-R+RW-R.litmus ├── C-RW-G+RW-Rrd+RW-CD+RW-R+RW-R+RW-R+RW-R.litmus ├── C-RW-G+RW-Rrd+RW-CD+RW-R+RW-R+RW-R.litmus ├── C-RW-G+RW-Rrd+RW-CD+RW-R+RW-R.litmus ├── C-RW-G+RW-Rrd+RW-CD+RW-R.litmus ├── C-RW-G+RW-Rrd+RW-CD.litmus ├── C-RW-G+RW-Rrd+RW-D+RW-G+RW-G+RW-G+RW-G+RW-R.litmus ├── C-RW-G+RW-Rrd+RW-D+RW-G+RW-G+RW-G+RW-R+RW-R.litmus ├── C-RW-G+RW-Rrd+RW-D+RW-G+RW-G+RW-G+RW-R.litmus ├── C-RW-G+RW-Rrd+RW-D+RW-G+RW-G+RW-R+RW-R+RW-R.litmus ├── C-RW-G+RW-Rrd+RW-D+RW-G+RW-G+RW-R+RW-R.litmus ├── C-RW-G+RW-Rrd+RW-D+RW-G+RW-G+RW-R.litmus ├── C-RW-G+RW-Rrd+RW-D+RW-G+RW-R+RW-G+RW-G+RW-R.litmus ├── C-RW-G+RW-Rrd+RW-D+RW-G+RW-R+RW-R+RW-G+RW-R.litmus ├── C-RW-G+RW-Rrd+RW-D+RW-G+RW-R+RW-R.litmus ├── C-RW-G+RW-Rrd+RW-D+RW-G+RW-R.litmus ├── C-RW-G+RW-Rrd+RW-D+RW-R+RW-G+RW-G+RW-G+RW-R.litmus ├── C-RW-G+RW-Rrd+RW-D+RW-R+RW-G+RW-G+RW-R+RW-R.litmus ├── C-RW-G+RW-Rrd+RW-D+RW-R+RW-G+RW-G+RW-R.litmus ├── C-RW-G+RW-Rrd+RW-D+RW-R+RW-G+RW-R+RW-R+RW-R.litmus ├── C-RW-G+RW-Rrd+RW-D+RW-R+RW-G+RW-R+RW-R.litmus ├── C-RW-G+RW-Rrd+RW-D+RW-R+RW-G+RW-R.litmus ├── C-RW-G+RW-Rrd+RW-D+RW-R+RW-R+RW-G+RW-G+RW-R.litmus ├── C-RW-G+RW-Rrd+RW-D+RW-R+RW-R+RW-G+RW-R+RW-R.litmus ├── C-RW-G+RW-Rrd+RW-D+RW-R+RW-R+RW-G+RW-R.litmus ├── C-RW-G+RW-Rrd+RW-D+RW-R+RW-R+RW-R+RW-G+RW-R.litmus ├── C-RW-G+RW-Rrd+RW-D+RW-R+RW-R+RW-R+RW-R+RW-R.litmus ├── C-RW-G+RW-Rrd+RW-D+RW-R+RW-R+RW-R+RW-R.litmus ├── C-RW-G+RW-Rrd+RW-D+RW-R+RW-R+RW-R.litmus ├── C-RW-G+RW-Rrd+RW-D+RW-R+RW-R.litmus ├── C-RW-G+RW-Rrd+RW-D+RW-R.litmus ├── C-RW-G+RW-Rrd+RW-D.litmus ├── C-RW-G+RW-Rs+RW-RCD+RW-G+RW-G+RW-G+RW-G+RW-R.litmus ├── C-RW-G+RW-Rs+RW-RCD+RW-G+RW-G+RW-G+RW-R+RW-R.litmus ├── C-RW-G+RW-Rs+RW-RCD+RW-G+RW-G+RW-G+RW-R.litmus ├── C-RW-G+RW-Rs+RW-RCD+RW-G+RW-G+RW-R+RW-R+RW-R.litmus ├── C-RW-G+RW-Rs+RW-RCD+RW-G+RW-G+RW-R+RW-R.litmus ├── C-RW-G+RW-Rs+RW-RCD+RW-G+RW-G+RW-R.litmus ├── C-RW-G+RW-Rs+RW-RCD+RW-G+RW-R+RW-G+RW-G+RW-R.litmus ├── C-RW-G+RW-Rs+RW-RCD+RW-G+RW-R+RW-R+RW-G+RW-R.litmus ├── C-RW-G+RW-Rs+RW-RCD+RW-G+RW-R+RW-R.litmus ├── C-RW-G+RW-Rs+RW-RCD+RW-G+RW-R.litmus ├── C-RW-G+RW-Rs+RW-RCD+RW-R+RW-G+RW-G+RW-G+RW-R.litmus ├── C-RW-G+RW-Rs+RW-RCD+RW-R+RW-G+RW-G+RW-R+RW-R.litmus ├── C-RW-G+RW-Rs+RW-RCD+RW-R+RW-G+RW-G+RW-R.litmus ├── C-RW-G+RW-Rs+RW-RCD+RW-R+RW-G+RW-R+RW-R+RW-R.litmus ├── C-RW-G+RW-Rs+RW-RCD+RW-R+RW-G+RW-R+RW-R.litmus ├── C-RW-G+RW-Rs+RW-RCD+RW-R+RW-G+RW-R.litmus ├── C-RW-G+RW-Rs+RW-RCD+RW-R+RW-R+RW-G+RW-G+RW-R.litmus ├── C-RW-G+RW-Rs+RW-RCD+RW-R+RW-R+RW-G+RW-R+RW-R.litmus ├── C-RW-G+RW-Rs+RW-RCD+RW-R+RW-R+RW-G+RW-R.litmus ├── C-RW-G+RW-Rs+RW-RCD+RW-R+RW-R+RW-R+RW-G+RW-R.litmus ├── C-RW-G+RW-Rs+RW-RCD+RW-R+RW-R+RW-R+RW-R+RW-R.litmus ├── C-RW-G+RW-Rs+RW-RCD+RW-R+RW-R+RW-R+RW-R.litmus ├── C-RW-G+RW-Rs+RW-RCD+RW-R+RW-R+RW-R.litmus ├── C-RW-G+RW-Rs+RW-RCD+RW-R+RW-R.litmus ├── C-RW-G+RW-Rs+RW-RCD+RW-R.litmus ├── C-RW-G+RW-Rs+RW-RCD.litmus ├── C-RW-G+RW-Rs+RW-RD+RW-G+RW-G+RW-G+RW-G+RW-R.litmus ├── C-RW-G+RW-Rs+RW-RD+RW-G+RW-G+RW-G+RW-R+RW-R.litmus ├── C-RW-G+RW-Rs+RW-RD+RW-G+RW-G+RW-G+RW-R.litmus ├── C-RW-G+RW-Rs+RW-RD+RW-G+RW-G+RW-R+RW-R+RW-R.litmus ├── C-RW-G+RW-Rs+RW-RD+RW-G+RW-G+RW-R+RW-R.litmus ├── C-RW-G+RW-Rs+RW-RD+RW-G+RW-G+RW-R.litmus ├── C-RW-G+RW-Rs+RW-RD+RW-G+RW-R+RW-G+RW-G+RW-R.litmus ├── C-RW-G+RW-Rs+RW-RD+RW-G+RW-R+RW-R+RW-G+RW-R.litmus ├── C-RW-G+RW-Rs+RW-RD+RW-G+RW-R+RW-R.litmus ├── C-RW-G+RW-Rs+RW-RD+RW-G+RW-R.litmus ├── C-RW-G+RW-Rs+RW-RD+RW-R+RW-G+RW-G+RW-G+RW-R.litmus ├── C-RW-G+RW-Rs+RW-RD+RW-R+RW-G+RW-G+RW-R+RW-R.litmus ├── C-RW-G+RW-Rs+RW-RD+RW-R+RW-G+RW-G+RW-R.litmus ├── C-RW-G+RW-Rs+RW-RD+RW-R+RW-G+RW-R+RW-R+RW-R.litmus ├── C-RW-G+RW-Rs+RW-RD+RW-R+RW-G+RW-R+RW-R.litmus ├── C-RW-G+RW-Rs+RW-RD+RW-R+RW-G+RW-R.litmus ├── C-RW-G+RW-Rs+RW-RD+RW-R+RW-R+RW-G+RW-G+RW-R.litmus ├── C-RW-G+RW-Rs+RW-RD+RW-R+RW-R+RW-G+RW-R+RW-R.litmus ├── C-RW-G+RW-Rs+RW-RD+RW-R+RW-R+RW-G+RW-R.litmus ├── C-RW-G+RW-Rs+RW-RD+RW-R+RW-R+RW-R+RW-G+RW-R.litmus ├── C-RW-G+RW-Rs+RW-RD+RW-R+RW-R+RW-R+RW-R+RW-R.litmus ├── C-RW-G+RW-Rs+RW-RD+RW-R+RW-R+RW-R+RW-R.litmus ├── C-RW-G+RW-Rs+RW-RD+RW-R+RW-R+RW-R.litmus ├── C-RW-G+RW-Rs+RW-RD+RW-R+RW-R.litmus ├── C-RW-G+RW-Rs+RW-RD+RW-R.litmus ├── C-RW-G+RW-Rs+RW-RD.litmus ├── C-RW-G+RW-r+RW-C+RW-B+RW-B+RW-B+RW-B+RW-B.litmus ├── C-RW-G+RW-r+RW-C+RW-B+RW-B+RW-B+RW-B.litmus ├── C-RW-G+RW-r+RW-C+RW-B+RW-B+RW-B+RW-G+RW-B.litmus ├── C-RW-G+RW-r+RW-C+RW-B+RW-B+RW-B.litmus ├── C-RW-G+RW-r+RW-C+RW-B+RW-B+RW-G+RW-B+RW-B.litmus ├── C-RW-G+RW-r+RW-C+RW-B+RW-B+RW-G+RW-B.litmus ├── C-RW-G+RW-r+RW-C+RW-B+RW-B+RW-G+RW-G+RW-B.litmus ├── C-RW-G+RW-r+RW-C+RW-B+RW-B.litmus ├── C-RW-G+RW-r+RW-C+RW-B+RW-G+RW-B+RW-B+RW-B.litmus ├── C-RW-G+RW-r+RW-C+RW-B+RW-G+RW-B+RW-B.litmus ├── C-RW-G+RW-r+RW-C+RW-B+RW-G+RW-B.litmus ├── C-RW-G+RW-r+RW-C+RW-B+RW-G+RW-G+RW-B+RW-B.litmus ├── C-RW-G+RW-r+RW-C+RW-B+RW-G+RW-G+RW-B.litmus ├── C-RW-G+RW-r+RW-C+RW-B+RW-G+RW-G+RW-G+RW-B.litmus ├── C-RW-G+RW-r+RW-C+RW-B.litmus ├── C-RW-G+RW-r+RW-C+RW-G+RW-B+RW-B+RW-G+RW-B.litmus ├── C-RW-G+RW-r+RW-C+RW-G+RW-B+RW-B.litmus ├── C-RW-G+RW-r+RW-C+RW-G+RW-B+RW-G+RW-G+RW-B.litmus ├── C-RW-G+RW-r+RW-C+RW-G+RW-B.litmus ├── C-RW-G+RW-r+RW-C+RW-G+RW-G+RW-B+RW-B+RW-B.litmus ├── C-RW-G+RW-r+RW-C+RW-G+RW-G+RW-B+RW-B.litmus ├── C-RW-G+RW-r+RW-C+RW-G+RW-G+RW-B.litmus ├── C-RW-G+RW-r+RW-C+RW-G+RW-G+RW-G+RW-B+RW-B.litmus ├── C-RW-G+RW-r+RW-C+RW-G+RW-G+RW-G+RW-B.litmus ├── C-RW-G+RW-r+RW-C+RW-G+RW-G+RW-G+RW-G+RW-B.litmus ├── C-RW-G+RW-r+RW-C.litmus ├── C-RW-G+RW-r+RW-a+RW-B+RW-B+RW-B+RW-B+RW-B.litmus ├── C-RW-G+RW-r+RW-a+RW-B+RW-B+RW-B+RW-B.litmus ├── C-RW-G+RW-r+RW-a+RW-B+RW-B+RW-B+RW-G+RW-B.litmus ├── C-RW-G+RW-r+RW-a+RW-B+RW-B+RW-B.litmus ├── C-RW-G+RW-r+RW-a+RW-B+RW-B+RW-G+RW-B+RW-B.litmus ├── C-RW-G+RW-r+RW-a+RW-B+RW-B+RW-G+RW-B.litmus ├── C-RW-G+RW-r+RW-a+RW-B+RW-B+RW-G+RW-G+RW-B.litmus ├── C-RW-G+RW-r+RW-a+RW-B+RW-B.litmus ├── C-RW-G+RW-r+RW-a+RW-B+RW-G+RW-B+RW-B+RW-B.litmus ├── C-RW-G+RW-r+RW-a+RW-B+RW-G+RW-B+RW-B.litmus ├── C-RW-G+RW-r+RW-a+RW-B+RW-G+RW-B.litmus ├── C-RW-G+RW-r+RW-a+RW-B+RW-G+RW-G+RW-B+RW-B.litmus ├── C-RW-G+RW-r+RW-a+RW-B+RW-G+RW-G+RW-B.litmus ├── C-RW-G+RW-r+RW-a+RW-B+RW-G+RW-G+RW-G+RW-B.litmus ├── C-RW-G+RW-r+RW-a+RW-B.litmus ├── C-RW-G+RW-r+RW-a+RW-G+RW-B+RW-B+RW-G+RW-B.litmus ├── C-RW-G+RW-r+RW-a+RW-G+RW-B+RW-B.litmus ├── C-RW-G+RW-r+RW-a+RW-G+RW-B+RW-G+RW-G+RW-B.litmus ├── C-RW-G+RW-r+RW-a+RW-G+RW-B.litmus ├── C-RW-G+RW-r+RW-a+RW-G+RW-G+RW-B+RW-B+RW-B.litmus ├── C-RW-G+RW-r+RW-a+RW-G+RW-G+RW-B+RW-B.litmus ├── C-RW-G+RW-r+RW-a+RW-G+RW-G+RW-B.litmus ├── C-RW-G+RW-r+RW-a+RW-G+RW-G+RW-G+RW-B+RW-B.litmus ├── C-RW-G+RW-r+RW-a+RW-G+RW-G+RW-G+RW-B.litmus ├── C-RW-G+RW-r+RW-a+RW-G+RW-G+RW-G+RW-G+RW-B.litmus ├── C-RW-G+RW-r+RW-a.litmus ├── C-RW-G.litmus ├── C-RW-GH+RW-R+RW-R+RW-R+RW-G+RW-R+RW-R.litmus ├── C-RW-GH+RW-R+RW-R+RW-R+RW-G+RW-R.litmus ├── C-RW-GH+RW-R+RW-R+RW-R+RW-R.litmus ├── C-RW-GH+RW-R+RW-R+RW-R.litmus ├── C-RW-GH+RW-R+RW-R.litmus ├── C-RW-GH+RW-R.litmus ├── C-RW-GR+RW-R+RW-R.litmus ├── C-RW-GR+RW-R.litmus ├── C-RW-GR1+RW-R+RW-R.litmus ├── C-RW-GR1+RW-R.litmus ├── C-RW-GR2+RW-R+RW-R.litmus ├── C-RW-GR2+RW-R.litmus ├── C-RW-GR3+RW-R+RW-R.litmus ├── C-RW-GR3+RW-R.litmus ├── C-RW-H+RW-R+RW-R+RW-G+RW-R+RW-R.litmus ├── C-RW-H+RW-R+RW-R+RW-G+RW-R.litmus ├── C-RW-H+RW-R+RW-R+RW-R.litmus ├── C-RW-H+RW-R+RW-R.litmus ├── C-RW-H+RW-R.litmus ├── C-RW-R+RW-R+RW-G+RW-G+RW-G+RW-G+RW-R+RW-R+RW-G+RW-G+RW-G+RW-G.litmus ├── C-RW-R+RW-R+RW-G+RW-G+RW-G+RW-G+RW-R+RW-R+RW-G+RW-G+RW-G+RW-R.litmus ├── C-RW-R+RW-R+RW-G+RW-G+RW-G+RW-G+RW-R+RW-R+RW-G+RW-G+RW-G.litmus ├── C-RW-R+RW-R+RW-G+RW-G+RW-G+RW-G+RW-R+RW-R+RW-G+RW-G+RW-R+RW-G.litmus ├── C-RW-R+RW-R+RW-G+RW-G+RW-G+RW-G+RW-R+RW-R+RW-G+RW-G+RW-R+RW-R+RW-G+RW-G+RW-G+RW-G+RW-R+RW-R+RW-G.litmus ├── C-RW-R+RW-R+RW-G+RW-G+RW-G+RW-G+RW-R+RW-R+RW-G+RW-G+RW-R+RW-R.litmus ├── C-RW-R+RW-R+RW-G+RW-G+RW-G+RW-G+RW-R+RW-R+RW-G+RW-G+RW-R.litmus ├── C-RW-R+RW-R+RW-G+RW-G+RW-G+RW-G+RW-R+RW-R+RW-G+RW-G.litmus ├── C-RW-R+RW-R+RW-G+RW-G+RW-G+RW-G+RW-R+RW-R+RW-G+RW-R+RW-G+RW-G.litmus ├── C-RW-R+RW-R+RW-G+RW-G+RW-G+RW-G+RW-R+RW-R+RW-G+RW-R+RW-G+RW-R.litmus ├── C-RW-R+RW-R+RW-G+RW-G+RW-G+RW-G+RW-R+RW-R+RW-G+RW-R+RW-G.litmus ├── C-RW-R+RW-R+RW-G+RW-G+RW-G+RW-G+RW-R+RW-R+RW-G+RW-R+RW-R+RW-G+RW-G+RW-G+RW-G+RW-R+RW-R+RW-G.litmus ├── C-RW-R+RW-R+RW-G+RW-G+RW-G+RW-G+RW-R+RW-R+RW-G+RW-R+RW-R+RW-G+RW-G+RW-G+RW-G+RW-R+RW-R+RW-R+RW-G.litmus ├── C-RW-R+RW-R+RW-G+RW-G+RW-G+RW-G+RW-R+RW-R+RW-G+RW-R+RW-R+RW-G.litmus ├── C-RW-R+RW-R+RW-G+RW-G+RW-G+RW-G+RW-R+RW-R+RW-G+RW-R+RW-R+RW-R+RW-G+RW-G+RW-G+RW-G+RW-R+RW-R+RW-G.litmus ├── C-RW-R+RW-R+RW-G+RW-G+RW-G+RW-G+RW-R+RW-R+RW-G+RW-R+RW-R+RW-R.litmus ├── C-RW-R+RW-R+RW-G+RW-G+RW-G+RW-G+RW-R+RW-R+RW-G+RW-R+RW-R.litmus ├── C-RW-R+RW-R+RW-G+RW-G+RW-G+RW-G+RW-R+RW-R+RW-G+RW-R.litmus ├── C-RW-R+RW-R+RW-G+RW-G+RW-G+RW-G+RW-R+RW-R+RW-G.litmus ├── C-RW-R+RW-R+RW-G+RW-G+RW-G+RW-G+RW-R+RW-R+RW-R+RW-G+RW-G+RW-G.litmus ├── C-RW-R+RW-R+RW-G+RW-G+RW-G+RW-G+RW-R+RW-R+RW-R+RW-G+RW-G+RW-R.litmus ├── C-RW-R+RW-R+RW-G+RW-G+RW-G+RW-G+RW-R+RW-R+RW-R+RW-G+RW-G.litmus ├── C-RW-R+RW-R+RW-G+RW-G+RW-G+RW-G+RW-R+RW-R+RW-R+RW-G+RW-R+RW-G.litmus ├── C-RW-R+RW-R+RW-G+RW-G+RW-G+RW-G+RW-R+RW-R+RW-R+RW-G+RW-R+RW-R.litmus ├── C-RW-R+RW-R+RW-G+RW-G+RW-G+RW-G+RW-R+RW-R+RW-R+RW-G+RW-R.litmus ├── C-RW-R+RW-R+RW-G+RW-G+RW-G+RW-G+RW-R+RW-R+RW-R+RW-G.litmus ├── C-RW-R+RW-R+RW-G+RW-G+RW-G+RW-G+RW-R+RW-R+RW-R+RW-R+RW-G+RW-G+RW-G+RW-G+RW-R+RW-R+RW-G+RW-G+RW-G.litmus ├── C-RW-R+RW-R+RW-G+RW-G+RW-G+RW-G+RW-R+RW-R+RW-R+RW-R+RW-G+RW-G+RW-G+RW-G+RW-R+RW-R+RW-G+RW-G+RW-R.litmus ├── C-RW-R+RW-R+RW-G+RW-G+RW-G+RW-G+RW-R+RW-R+RW-R+RW-R+RW-G+RW-G+RW-G+RW-G+RW-R+RW-R+RW-G+RW-G.litmus ├── C-RW-R+RW-R+RW-G+RW-G+RW-G+RW-G+RW-R+RW-R+RW-R+RW-R+RW-G+RW-G+RW-G+RW-G+RW-R+RW-R+RW-G+RW-R+RW-G.litmus ├── C-RW-R+RW-R+RW-G+RW-G+RW-G+RW-G+RW-R+RW-R+RW-R+RW-R+RW-G+RW-G+RW-G+RW-G+RW-R+RW-R+RW-G+RW-R+RW-R.litmus ├── C-RW-R+RW-R+RW-G+RW-G+RW-G+RW-G+RW-R+RW-R+RW-R+RW-R+RW-G+RW-G+RW-G+RW-G+RW-R+RW-R+RW-G+RW-R.litmus ├── C-RW-R+RW-R+RW-G+RW-G+RW-G+RW-G+RW-R+RW-R+RW-R+RW-R+RW-G+RW-G+RW-G+RW-G+RW-R+RW-R+RW-G.litmus ├── C-RW-R+RW-R+RW-G+RW-G+RW-G+RW-G+RW-R+RW-R+RW-R+RW-R+RW-G+RW-G+RW-G+RW-G+RW-R+RW-R+RW-R+RW-G+RW-G.litmus ├── C-RW-R+RW-R+RW-G+RW-G+RW-G+RW-G+RW-R+RW-R+RW-R+RW-R+RW-G+RW-G+RW-G+RW-G+RW-R+RW-R+RW-R+RW-G+RW-R.litmus ├── C-RW-R+RW-R+RW-G+RW-G+RW-G+RW-G+RW-R+RW-R+RW-R+RW-R+RW-G+RW-G+RW-G+RW-G+RW-R+RW-R+RW-R+RW-G.litmus ├── C-RW-R+RW-R+RW-G+RW-G+RW-G+RW-G+RW-R+RW-R+RW-R+RW-R+RW-G+RW-G+RW-G+RW-G+RW-R+RW-R+RW-R+RW-R+RW-G.litmus ├── C-RW-R+RW-R+RW-G+RW-G+RW-G+RW-G+RW-R+RW-R+RW-R+RW-R+RW-G+RW-G+RW-G+RW-G+RW-R+RW-R+RW-R+RW-R+RW-R.litmus ├── C-RW-R+RW-R+RW-G+RW-G+RW-G+RW-G+RW-R+RW-R+RW-R+RW-R+RW-G+RW-G+RW-G+RW-G+RW-R+RW-R+RW-R+RW-R.litmus ├── C-RW-R+RW-R+RW-G+RW-G+RW-G+RW-G+RW-R+RW-R+RW-R+RW-R+RW-G+RW-G+RW-G+RW-G+RW-R+RW-R+RW-R.litmus ├── C-RW-R+RW-R+RW-G+RW-G+RW-G+RW-G+RW-R+RW-R+RW-R+RW-R+RW-G+RW-G+RW-G+RW-G+RW-R+RW-R.litmus ├── C-RW-R+RW-R+RW-G+RW-G+RW-G+RW-G+RW-R+RW-R+RW-R+RW-R+RW-G+RW-G.litmus ├── C-RW-R+RW-R+RW-G+RW-G+RW-G+RW-G+RW-R+RW-R+RW-R+RW-R+RW-G+RW-R.litmus ├── C-RW-R+RW-R+RW-G+RW-G+RW-G+RW-G+RW-R+RW-R+RW-R+RW-R+RW-G.litmus ├── C-RW-R+RW-R+RW-G+RW-G+RW-G+RW-G+RW-R+RW-R+RW-R+RW-R+RW-R+RW-G+RW-G+RW-G+RW-G+RW-R+RW-R+RW-G+RW-G.litmus ├── C-RW-R+RW-R+RW-G+RW-G+RW-G+RW-G+RW-R+RW-R+RW-R+RW-R+RW-R+RW-G+RW-G+RW-G+RW-G+RW-R+RW-R+RW-G+RW-R.litmus ├── C-RW-R+RW-R+RW-G+RW-G+RW-G+RW-G+RW-R+RW-R+RW-R+RW-R+RW-R+RW-G+RW-G+RW-G+RW-G+RW-R+RW-R+RW-G.litmus ├── C-RW-R+RW-R+RW-G+RW-G+RW-G+RW-G+RW-R+RW-R+RW-R+RW-R+RW-R+RW-G+RW-G+RW-G+RW-G+RW-R+RW-R+RW-R+RW-G.litmus ├── C-RW-R+RW-R+RW-G+RW-G+RW-G+RW-G+RW-R+RW-R+RW-R+RW-R+RW-R+RW-G+RW-G+RW-G+RW-G+RW-R+RW-R+RW-R.litmus ├── C-RW-R+RW-R+RW-G+RW-G+RW-G+RW-G+RW-R+RW-R+RW-R+RW-R+RW-R+RW-G.litmus ├── C-RW-R+RW-R+RW-G+RW-G+RW-G+RW-G+RW-R+RW-R+RW-R+RW-R+RW-R+RW-R+RW-G+RW-G+RW-G+RW-G+RW-R+RW-R+RW-G.litmus ├── C-RW-R+RW-R+RW-G+RW-G+RW-G+RW-G+RW-R+RW-R+RW-R+RW-R+RW-R+RW-R+RW-G+RW-G+RW-G+RW-G+RW-R+RW-R+RW-R.litmus ├── C-RW-R+RW-R+RW-G+RW-G+RW-G+RW-G+RW-R+RW-R+RW-R+RW-R+RW-R+RW-R.litmus ├── C-RW-R+RW-R+RW-G+RW-G+RW-G+RW-G+RW-R+RW-R+RW-R+RW-R+RW-R.litmus ├── C-RW-R+RW-R+RW-G+RW-G+RW-G+RW-G+RW-R+RW-R+RW-R+RW-R.litmus ├── C-RW-R+RW-R+RW-G+RW-G+RW-G+RW-G+RW-R+RW-R+RW-R.litmus ├── C-RW-R+RW-R+RW-G+RW-G+RW-G+RW-G+RW-R+RW-R.litmus ├── C-RW-R+RW-R+RW-R+RW-G+RW-G+RW-R+RW-G+RW-G.litmus ├── C-RW-R+RW-R+RW-R+RW-R+RW-R+RW-R+RW-R+RW-R.litmus ├── C-RW-R+RW-R+RW-R+RW-R+RW-R+RW-R+RW-R.litmus ├── C-RW-R+RW-R+RW-R+RW-R+RW-R+RW-R.litmus ├── C-RW-R+RW-R+RW-R+RW-R+RW-R.litmus ├── C-RW-R+RW-R+RW-R+RW-R.litmus ├── C-RW-R+RW-R+RW-R.litmus ├── C-RW-R+RW-R.litmus ├── C-RW-R.litmus ├── C-RW-R1+RW-R1+RW-R1+RW-R1.litmus ├── C-RW-R1+RW-R1+RW-R1.litmus ├── C-RW-R1+RW-R1.litmus ├── C-RW-R1.litmus ├── C-RW-R1I+RW-R1I+RW-R1I+RW-R1I.litmus ├── C-RW-R1I+RW-R1I+RW-R1I.litmus ├── C-RW-R1I+RW-R1I.litmus ├── C-RW-R1I.litmus ├── C-RW-R2+RW-R2+RW-R2+RW-R2.litmus ├── C-RW-R2+RW-R2+RW-R2.litmus ├── C-RW-R2+RW-R2.litmus ├── C-RW-R2.litmus ├── C-RW-R2I+RW-R2I+RW-R2I+RW-R2I.litmus ├── C-RW-R2I+RW-R2I+RW-R2I.litmus ├── C-RW-R2I+RW-R2I.litmus ├── C-RW-R2I.litmus ├── C-RW-R3+RW-R3+RW-R3+RW-R3.litmus ├── C-RW-R3+RW-R3+RW-R3.litmus ├── C-RW-R3+RW-R3.litmus ├── C-RW-R3.litmus ├── C-RW-R3I+RW-R3I+RW-R3I+RW-R3I.litmus ├── C-RW-R3I+RW-R3I+RW-R3I.litmus ├── C-RW-R3I+RW-R3I.litmus ├── C-RW-R3I.litmus ├── C-RW-RB+RW-R+RW-R+RW-R+RW-R+RW-R+RW-R+RW-R.litmus ├── C-RW-RB+RW-R+RW-R+RW-R+RW-R+RW-R+RW-R.litmus ├── C-RW-RB+RW-R+RW-R+RW-R+RW-R+RW-R.litmus ├── C-RW-RB+RW-R+RW-R+RW-R+RW-R.litmus ├── C-RW-RB+RW-R+RW-R+RW-R.litmus ├── C-RW-RB+RW-R+RW-R.litmus ├── C-RW-RB+RW-R.litmus ├── C-RW-RB.litmus ├── C-RW-RI+RW-RI+RW-RI+RW-RI+RW-RI+RW-RI+RW-RI+RW-RI.litmus ├── C-RW-RI+RW-RI+RW-RI+RW-RI+RW-RI+RW-RI+RW-RI.litmus ├── C-RW-RI+RW-RI+RW-RI+RW-RI+RW-RI+RW-RI.litmus ├── C-RW-RI+RW-RI+RW-RI+RW-RI+RW-RI.litmus ├── C-RW-RI+RW-RI+RW-RI+RW-RI.litmus ├── C-RW-RI+RW-RI+RW-RI.litmus ├── C-RW-RI+RW-RI.litmus ├── C-RW-RI.litmus ├── C-RW-Rr+RW-RC+RW-R+RW-R+RW-R+RW-R+RW-R+RW-R.litmus ├── C-RW-Rr+RW-RC+RW-R+RW-R+RW-R+RW-R+RW-R.litmus ├── C-RW-Rr+RW-RC+RW-R+RW-R+RW-R+RW-R.litmus ├── C-RW-Rr+RW-RC+RW-R+RW-R+RW-R.litmus ├── C-RW-Rr+RW-RC+RW-R+RW-R.litmus ├── C-RW-Rr+RW-RC+RW-R.litmus ├── C-RW-Rr+RW-RC.litmus ├── C-RW-Rr+RW-Ra+RW-R+RW-R+RW-R+RW-R+RW-R+RW-R.litmus ├── C-RW-Rr+RW-Ra+RW-R+RW-R+RW-R+RW-R+RW-R.litmus ├── C-RW-Rr+RW-Ra+RW-R+RW-R+RW-R+RW-R.litmus ├── C-RW-Rr+RW-Ra+RW-R+RW-R+RW-R.litmus ├── C-RW-Rr+RW-Ra+RW-R+RW-R.litmus ├── C-RW-Rr+RW-Ra+RW-R.litmus ├── C-RW-Rr+RW-Ra.litmus ├── C-RW-Rrd+RW-CD+RW-R+RW-R+RW-R+RW-R+RW-R+RW-R.litmus ├── C-RW-Rrd+RW-CD+RW-R+RW-R+RW-R+RW-R+RW-R.litmus ├── C-RW-Rrd+RW-CD+RW-R+RW-R+RW-R+RW-R.litmus ├── C-RW-Rrd+RW-CD+RW-R+RW-R+RW-R.litmus ├── C-RW-Rrd+RW-CD+RW-R+RW-R.litmus ├── C-RW-Rrd+RW-CD+RW-R.litmus ├── C-RW-Rrd+RW-CD.litmus ├── C-RW-Rrd+RW-D+RW-R+RW-R+RW-R+RW-R+RW-R+RW-R.litmus ├── C-RW-Rrd+RW-D+RW-R+RW-R+RW-R+RW-R+RW-R.litmus ├── C-RW-Rrd+RW-D+RW-R+RW-R+RW-R+RW-R.litmus ├── C-RW-Rrd+RW-D+RW-R+RW-R+RW-R.litmus ├── C-RW-Rrd+RW-D+RW-R+RW-R.litmus ├── C-RW-Rrd+RW-D+RW-R.litmus ├── C-RW-Rrd+RW-D.litmus ├── C-RW-Rs+RW-RCD+RW-R+RW-R+RW-R+RW-R+RW-R+RW-R.litmus ├── C-RW-Rs+RW-RCD+RW-R+RW-R+RW-R+RW-R+RW-R.litmus ├── C-RW-Rs+RW-RCD+RW-R+RW-R+RW-R+RW-R.litmus ├── C-RW-Rs+RW-RCD+RW-R+RW-R+RW-R.litmus ├── C-RW-Rs+RW-RCD+RW-R+RW-R.litmus ├── C-RW-Rs+RW-RCD+RW-R.litmus ├── C-RW-Rs+RW-RCD.litmus ├── C-RW-Rs+RW-RD+RW-R+RW-R+RW-R+RW-R+RW-R+RW-R.litmus ├── C-RW-Rs+RW-RD+RW-R+RW-R+RW-R+RW-R+RW-R.litmus ├── C-RW-Rs+RW-RD+RW-R+RW-R+RW-R+RW-R.litmus ├── C-RW-Rs+RW-RD+RW-R+RW-R+RW-R.litmus ├── C-RW-Rs+RW-RD+RW-R+RW-R.litmus ├── C-RW-Rs+RW-RD+RW-R.litmus ├── C-RW-Rs+RW-RD.litmus ├── C-RW-r+RW-C+RW-B+RW-B+RW-B+RW-B+RW-B+RW-B.litmus ├── C-RW-r+RW-C+RW-B+RW-B+RW-B+RW-B+RW-B.litmus ├── C-RW-r+RW-C+RW-B+RW-B+RW-B+RW-B.litmus ├── C-RW-r+RW-C+RW-B+RW-B+RW-B.litmus ├── C-RW-r+RW-C+RW-B+RW-B.litmus ├── C-RW-r+RW-C+RW-B.litmus ├── C-RW-r+RW-C.litmus ├── C-RW-r+RW-a+RW-B+RW-B+RW-B+RW-B+RW-B+RW-B.litmus ├── C-RW-r+RW-a+RW-B+RW-B+RW-B+RW-B+RW-B.litmus ├── C-RW-r+RW-a+RW-B+RW-B+RW-B+RW-B.litmus ├── C-RW-r+RW-a+RW-B+RW-B+RW-B.litmus ├── C-RW-r+RW-a+RW-B+RW-B.litmus ├── C-RW-r+RW-a+RW-B.litmus ├── C-RW-r+RW-a.litmus ├── C-WR-G+WR-G+WR-G+WR-G+WR-G+WR-G+WR-G+WR-G.litmus ├── C-WR-G+WR-G+WR-G+WR-G+WR-G+WR-G+WR-G+WR-R.litmus ├── C-WR-G+WR-G+WR-G+WR-G+WR-G+WR-G+WR-G.litmus ├── C-WR-G+WR-G+WR-G+WR-G+WR-G+WR-G+WR-R+WR-R.litmus ├── C-WR-G+WR-G+WR-G+WR-G+WR-G+WR-G+WR-R.litmus ├── C-WR-G+WR-G+WR-G+WR-G+WR-G+WR-G.litmus ├── C-WR-G+WR-G+WR-G+WR-G+WR-G+WR-R+WR-R+WR-R.litmus ├── C-WR-G+WR-G+WR-G+WR-G+WR-G+WR-R+WR-R.litmus ├── C-WR-G+WR-G+WR-G+WR-G+WR-G+WR-R.litmus ├── C-WR-G+WR-G+WR-G+WR-G+WR-G.litmus ├── C-WR-G+WR-G+WR-G+WR-G+WR-R+WR-G+WR-G+WR-R.litmus ├── C-WR-G+WR-G+WR-G+WR-G+WR-R+WR-R+WR-R+WR-R.litmus ├── C-WR-G+WR-G+WR-G+WR-G+WR-R+WR-R+WR-R.litmus ├── C-WR-G+WR-G+WR-G+WR-G+WR-R+WR-R.litmus ├── C-WR-G+WR-G+WR-G+WR-G+WR-R.litmus ├── C-WR-G+WR-G+WR-G+WR-G.litmus ├── C-WR-G+WR-G+WR-G+WR-R+WR-G+WR-G+WR-G+WR-R.litmus ├── C-WR-G+WR-G+WR-G+WR-R+WR-G+WR-G+WR-R+WR-R.litmus ├── C-WR-G+WR-G+WR-G+WR-R+WR-G+WR-G+WR-R.litmus ├── C-WR-G+WR-G+WR-G+WR-R+WR-R+WR-R+WR-R+WR-R.litmus ├── C-WR-G+WR-G+WR-G+WR-R+WR-R+WR-R+WR-R.litmus ├── C-WR-G+WR-G+WR-G+WR-R+WR-R+WR-R.litmus ├── C-WR-G+WR-G+WR-G+WR-R+WR-R.litmus ├── C-WR-G+WR-G+WR-G+WR-R.litmus ├── C-WR-G+WR-G+WR-G.litmus ├── C-WR-G+WR-G+WR-R+WR-G+WR-G+WR-G+WR-R+WR-R.litmus ├── C-WR-G+WR-G+WR-R+WR-G+WR-G+WR-R+WR-R+WR-R.litmus ├── C-WR-G+WR-G+WR-R+WR-G+WR-G+WR-R+WR-R.litmus ├── C-WR-G+WR-G+WR-R+WR-G+WR-G+WR-R.litmus ├── C-WR-G+WR-G+WR-R+WR-R+WR-G+WR-G+WR-R+WR-R.litmus ├── C-WR-G+WR-G+WR-R+WR-R+WR-R+WR-R+WR-R+WR-R.litmus ├── C-WR-G+WR-G+WR-R+WR-R+WR-R+WR-R+WR-R.litmus ├── C-WR-G+WR-G+WR-R+WR-R+WR-R+WR-R.litmus ├── C-WR-G+WR-G+WR-R+WR-R+WR-R.litmus ├── C-WR-G+WR-G+WR-R+WR-R.litmus ├── C-WR-G+WR-G+WR-R.litmus ├── C-WR-G+WR-G.litmus ├── C-WR-G+WR-R+WR-G+WR-G+WR-G+WR-G+WR-G+WR-R.litmus ├── C-WR-G+WR-R+WR-G+WR-G+WR-G+WR-G+WR-R+WR-R.litmus ├── C-WR-G+WR-R+WR-G+WR-G+WR-G+WR-G+WR-R.litmus ├── C-WR-G+WR-R+WR-G+WR-G+WR-G+WR-R+WR-R+WR-R.litmus ├── C-WR-G+WR-R+WR-G+WR-G+WR-G+WR-R+WR-R.litmus ├── C-WR-G+WR-R+WR-G+WR-G+WR-G+WR-R.litmus ├── C-WR-G+WR-R+WR-G+WR-G+WR-R+WR-G+WR-G+WR-R.litmus ├── C-WR-G+WR-R+WR-G+WR-G+WR-R+WR-R+WR-R+WR-R.litmus ├── C-WR-G+WR-R+WR-G+WR-G+WR-R+WR-R+WR-R.litmus ├── C-WR-G+WR-R+WR-G+WR-G+WR-R+WR-R.litmus ├── C-WR-G+WR-R+WR-G+WR-G+WR-R.litmus ├── C-WR-G+WR-R+WR-G+WR-R+WR-G+WR-G+WR-G+WR-R.litmus ├── C-WR-G+WR-R+WR-G+WR-R+WR-G+WR-G+WR-R+WR-R.litmus ├── C-WR-G+WR-R+WR-G+WR-R+WR-G+WR-G+WR-R.litmus ├── C-WR-G+WR-R+WR-G+WR-R+WR-R+WR-G+WR-G+WR-R.litmus ├── C-WR-G+WR-R+WR-G+WR-R+WR-R+WR-G+WR-R.litmus ├── C-WR-G+WR-R+WR-G+WR-R+WR-R+WR-R+WR-G+WR-R.litmus ├── C-WR-G+WR-R+WR-G+WR-R.litmus ├── C-WR-G+WR-R+WR-R+WR-G+WR-G+WR-G+WR-G+WR-R.litmus ├── C-WR-G+WR-R+WR-R+WR-G+WR-G+WR-G+WR-R+WR-R.litmus ├── C-WR-G+WR-R+WR-R+WR-G+WR-G+WR-G+WR-R.litmus ├── C-WR-G+WR-R+WR-R+WR-G+WR-G+WR-R+WR-R+WR-R.litmus ├── C-WR-G+WR-R+WR-R+WR-G+WR-G+WR-R+WR-R.litmus ├── C-WR-G+WR-R+WR-R+WR-G+WR-G+WR-R.litmus ├── C-WR-G+WR-R+WR-R+WR-G+WR-R+WR-G+WR-G+WR-R.litmus ├── C-WR-G+WR-R+WR-R+WR-G+WR-R+WR-R+WR-G+WR-R.litmus ├── C-WR-G+WR-R+WR-R+WR-G+WR-R+WR-R.litmus ├── C-WR-G+WR-R+WR-R+WR-G+WR-R.litmus ├── C-WR-G+WR-R+WR-R+WR-R+WR-G+WR-G+WR-G+WR-R.litmus ├── C-WR-G+WR-R+WR-R+WR-R+WR-G+WR-G+WR-R+WR-R.litmus ├── C-WR-G+WR-R+WR-R+WR-R+WR-G+WR-G+WR-R.litmus ├── C-WR-G+WR-R+WR-R+WR-R+WR-G+WR-R+WR-R+WR-R.litmus ├── C-WR-G+WR-R+WR-R+WR-R+WR-G+WR-R+WR-R.litmus ├── C-WR-G+WR-R+WR-R+WR-R+WR-G+WR-R.litmus ├── C-WR-G+WR-R+WR-R+WR-R+WR-R+WR-G+WR-G+WR-R.litmus ├── C-WR-G+WR-R+WR-R+WR-R+WR-R+WR-G+WR-R+WR-R.litmus ├── C-WR-G+WR-R+WR-R+WR-R+WR-R+WR-G+WR-R.litmus ├── C-WR-G+WR-R+WR-R+WR-R+WR-R+WR-R+WR-G+WR-R.litmus ├── C-WR-G+WR-R+WR-R+WR-R+WR-R+WR-R+WR-R+WR-R.litmus ├── C-WR-G+WR-R+WR-R+WR-R+WR-R+WR-R+WR-R.litmus ├── C-WR-G+WR-R+WR-R+WR-R+WR-R+WR-R.litmus ├── C-WR-G+WR-R+WR-R+WR-R+WR-R.litmus ├── C-WR-G+WR-R+WR-R+WR-R.litmus ├── C-WR-G+WR-R+WR-R.litmus ├── C-WR-G+WR-R.litmus ├── C-WR-G.litmus ├── C-WR-GH+WR-R+WR-R+WR-R+WR-G+WR-R+WR-R.litmus ├── C-WR-GH+WR-R+WR-R+WR-R+WR-G+WR-R.litmus ├── C-WR-GH+WR-R+WR-R+WR-R+WR-R.litmus ├── C-WR-GH+WR-R+WR-R+WR-R.litmus ├── C-WR-GH+WR-R+WR-R.litmus ├── C-WR-GH+WR-R.litmus ├── C-WR-GR+WR-R+WR-R.litmus ├── C-WR-GR+WR-R.litmus ├── C-WR-GR1+WR-R+WR-R.litmus ├── C-WR-GR1+WR-R.litmus ├── C-WR-GR2+WR-R+WR-R.litmus ├── C-WR-GR2+WR-R.litmus ├── C-WR-GR3+WR-R+WR-R.litmus ├── C-WR-GR3+WR-R.litmus ├── C-WR-H+WR-R+WR-R+WR-G+WR-R+WR-R.litmus ├── C-WR-H+WR-R+WR-R+WR-G+WR-R.litmus ├── C-WR-H+WR-R+WR-R+WR-R.litmus ├── C-WR-H+WR-R+WR-R.litmus ├── C-WR-H+WR-R.litmus ├── C-WR-R+WR-R+WR-R+WR-R+WR-R+WR-R+WR-R+WR-R.litmus ├── C-WR-R+WR-R+WR-R+WR-R+WR-R+WR-R+WR-R.litmus ├── C-WR-R+WR-R+WR-R+WR-R+WR-R+WR-R.litmus ├── C-WR-R+WR-R+WR-R+WR-R+WR-R.litmus ├── C-WR-R+WR-R+WR-R+WR-R.litmus ├── C-WR-R+WR-R+WR-R.litmus ├── C-WR-R+WR-R.litmus ├── C-WR-R.litmus ├── C-WW-B+WW-R+WW-R+WW-R+WW-R+WW-R+WW-R+WW-R.litmus ├── C-WW-B+WW-R+WW-R+WW-R+WW-R+WW-R+WW-R.litmus ├── C-WW-B+WW-R+WW-R+WW-R+WW-R+WW-R.litmus ├── C-WW-B+WW-R+WW-R+WW-R+WW-R.litmus ├── C-WW-B+WW-R+WW-R+WW-R.litmus ├── C-WW-B+WW-R+WW-R.litmus ├── C-WW-B+WW-R.litmus ├── C-WW-B.litmus ├── C-WW-G+WW-B+WW-G+WW-G+WW-G+WW-G+WW-G+WW-R.litmus ├── C-WW-G+WW-B+WW-G+WW-G+WW-G+WW-G+WW-R+WW-R.litmus ├── C-WW-G+WW-B+WW-G+WW-G+WW-G+WW-G+WW-R.litmus ├── C-WW-G+WW-B+WW-G+WW-G+WW-G+WW-R+WW-R+WW-R.litmus ├── C-WW-G+WW-B+WW-G+WW-G+WW-G+WW-R+WW-R.litmus ├── C-WW-G+WW-B+WW-G+WW-G+WW-G+WW-R.litmus ├── C-WW-G+WW-B+WW-G+WW-G+WW-R+WW-G+WW-G+WW-R.litmus ├── C-WW-G+WW-B+WW-G+WW-G+WW-R+WW-R+WW-R+WW-R.litmus ├── C-WW-G+WW-B+WW-G+WW-G+WW-R+WW-R+WW-R.litmus ├── C-WW-G+WW-B+WW-G+WW-G+WW-R+WW-R.litmus ├── C-WW-G+WW-B+WW-G+WW-G+WW-R.litmus ├── C-WW-G+WW-B+WW-G+WW-R+WW-G+WW-G+WW-G+WW-R.litmus ├── C-WW-G+WW-B+WW-G+WW-R+WW-G+WW-G+WW-R+WW-R.litmus ├── C-WW-G+WW-B+WW-G+WW-R+WW-G+WW-G+WW-R.litmus ├── C-WW-G+WW-B+WW-G+WW-R+WW-R+WW-G+WW-G+WW-R.litmus ├── C-WW-G+WW-B+WW-G+WW-R+WW-R+WW-G+WW-R.litmus ├── C-WW-G+WW-B+WW-G+WW-R+WW-R+WW-R+WW-G+WW-R.litmus ├── C-WW-G+WW-B+WW-G+WW-R.litmus ├── C-WW-G+WW-B+WW-R+WW-G+WW-G+WW-G+WW-G+WW-R.litmus ├── C-WW-G+WW-B+WW-R+WW-G+WW-G+WW-G+WW-R+WW-R.litmus ├── C-WW-G+WW-B+WW-R+WW-G+WW-G+WW-G+WW-R.litmus ├── C-WW-G+WW-B+WW-R+WW-G+WW-G+WW-R+WW-R+WW-R.litmus ├── C-WW-G+WW-B+WW-R+WW-G+WW-G+WW-R+WW-R.litmus ├── C-WW-G+WW-B+WW-R+WW-G+WW-G+WW-R.litmus ├── C-WW-G+WW-B+WW-R+WW-G+WW-R+WW-G+WW-G+WW-R.litmus ├── C-WW-G+WW-B+WW-R+WW-G+WW-R+WW-R+WW-G+WW-R.litmus ├── C-WW-G+WW-B+WW-R+WW-G+WW-R+WW-R.litmus ├── C-WW-G+WW-B+WW-R+WW-G+WW-R.litmus ├── C-WW-G+WW-B+WW-R+WW-R+WW-G+WW-G+WW-G+WW-R.litmus ├── C-WW-G+WW-B+WW-R+WW-R+WW-G+WW-G+WW-R+WW-R.litmus ├── C-WW-G+WW-B+WW-R+WW-R+WW-G+WW-G+WW-R.litmus ├── C-WW-G+WW-B+WW-R+WW-R+WW-G+WW-R+WW-R+WW-R.litmus ├── C-WW-G+WW-B+WW-R+WW-R+WW-G+WW-R+WW-R.litmus ├── C-WW-G+WW-B+WW-R+WW-R+WW-G+WW-R.litmus ├── C-WW-G+WW-B+WW-R+WW-R+WW-R+WW-G+WW-G+WW-R.litmus ├── C-WW-G+WW-B+WW-R+WW-R+WW-R+WW-G+WW-R+WW-R.litmus ├── C-WW-G+WW-B+WW-R+WW-R+WW-R+WW-G+WW-R.litmus ├── C-WW-G+WW-B+WW-R+WW-R+WW-R+WW-R+WW-G+WW-R.litmus ├── C-WW-G+WW-B+WW-R+WW-R+WW-R+WW-R+WW-R+WW-R.litmus ├── C-WW-G+WW-B+WW-R+WW-R+WW-R+WW-R+WW-R.litmus ├── C-WW-G+WW-B+WW-R+WW-R+WW-R+WW-R.litmus ├── C-WW-G+WW-B+WW-R+WW-R+WW-R.litmus ├── C-WW-G+WW-B+WW-R+WW-R.litmus ├── C-WW-G+WW-B+WW-R.litmus ├── C-WW-G+WW-B.litmus ├── C-WW-G+WW-G+WW-B+WW-G+WW-G+WW-G+WW-R+WW-R.litmus ├── C-WW-G+WW-G+WW-B+WW-G+WW-G+WW-R+WW-R+WW-R.litmus ├── C-WW-G+WW-G+WW-B+WW-G+WW-G+WW-R+WW-R.litmus ├── C-WW-G+WW-G+WW-B+WW-G+WW-G+WW-R.litmus ├── C-WW-G+WW-G+WW-B+WW-R+WW-G+WW-G+WW-R+WW-R.litmus ├── C-WW-G+WW-G+WW-B+WW-R+WW-R+WW-R+WW-R+WW-R.litmus ├── C-WW-G+WW-G+WW-B+WW-R+WW-R+WW-R+WW-R.litmus ├── C-WW-G+WW-G+WW-B+WW-R+WW-R+WW-R.litmus ├── C-WW-G+WW-G+WW-B+WW-R+WW-R.litmus ├── C-WW-G+WW-G+WW-B+WW-R.litmus ├── C-WW-G+WW-G+WW-B.litmus ├── C-WW-G+WW-G+WW-G+WW-B+WW-G+WW-G+WW-G+WW-R.litmus ├── C-WW-G+WW-G+WW-G+WW-B+WW-G+WW-G+WW-R+WW-R.litmus ├── C-WW-G+WW-G+WW-G+WW-B+WW-G+WW-G+WW-R.litmus ├── C-WW-G+WW-G+WW-G+WW-B+WW-R+WW-R+WW-R+WW-R.litmus ├── C-WW-G+WW-G+WW-G+WW-B+WW-R+WW-R+WW-R.litmus ├── C-WW-G+WW-G+WW-G+WW-B+WW-R+WW-R.litmus ├── C-WW-G+WW-G+WW-G+WW-B+WW-R.litmus ├── C-WW-G+WW-G+WW-G+WW-B.litmus ├── C-WW-G+WW-G+WW-G+WW-G+WW-B+WW-G+WW-G+WW-R.litmus ├── C-WW-G+WW-G+WW-G+WW-G+WW-B+WW-R+WW-R+WW-R.litmus ├── C-WW-G+WW-G+WW-G+WW-G+WW-B+WW-R+WW-R.litmus ├── C-WW-G+WW-G+WW-G+WW-G+WW-B+WW-R.litmus ├── C-WW-G+WW-G+WW-G+WW-G+WW-B.litmus ├── C-WW-G+WW-G+WW-G+WW-G+WW-G+WW-B+WW-R+WW-R.litmus ├── C-WW-G+WW-G+WW-G+WW-G+WW-G+WW-B+WW-R.litmus ├── C-WW-G+WW-G+WW-G+WW-G+WW-G+WW-B.litmus ├── C-WW-G+WW-G+WW-G+WW-G+WW-G+WW-G+WW-B+WW-R.litmus ├── C-WW-G+WW-G+WW-G+WW-G+WW-G+WW-G+WW-B.litmus ├── C-WW-G+WW-G+WW-G+WW-G+WW-G+WW-G+WW-G+WW-B.litmus ├── C-WW-G+WW-G+WW-G+WW-G+WW-G+WW-G+WW-G+WW-G.litmus ├── C-WW-G+WW-G+WW-G+WW-G+WW-G+WW-G+WW-G+WW-R.litmus ├── C-WW-G+WW-G+WW-G+WW-G+WW-G+WW-G+WW-G.litmus ├── C-WW-G+WW-G+WW-G+WW-G+WW-G+WW-G+WW-R+WW-R.litmus ├── C-WW-G+WW-G+WW-G+WW-G+WW-G+WW-G+WW-R.litmus ├── C-WW-G+WW-G+WW-G+WW-G+WW-G+WW-G.litmus ├── C-WW-G+WW-G+WW-G+WW-G+WW-G+WW-R+WW-R+WW-R.litmus ├── C-WW-G+WW-G+WW-G+WW-G+WW-G+WW-R+WW-R.litmus ├── C-WW-G+WW-G+WW-G+WW-G+WW-G+WW-R.litmus ├── C-WW-G+WW-G+WW-G+WW-G+WW-G.litmus ├── C-WW-G+WW-G+WW-G+WW-G+WW-R+WW-G+WW-G+WW-R.litmus ├── C-WW-G+WW-G+WW-G+WW-G+WW-R+WW-R+WW-R+WW-R.litmus ├── C-WW-G+WW-G+WW-G+WW-G+WW-R+WW-R+WW-R.litmus ├── C-WW-G+WW-G+WW-G+WW-G+WW-R+WW-R.litmus ├── C-WW-G+WW-G+WW-G+WW-G+WW-R.litmus ├── C-WW-G+WW-G+WW-G+WW-G.litmus ├── C-WW-G+WW-G+WW-G+WW-R+WW-G+WW-G+WW-G+WW-R.litmus ├── C-WW-G+WW-G+WW-G+WW-R+WW-G+WW-G+WW-R+WW-R.litmus ├── C-WW-G+WW-G+WW-G+WW-R+WW-G+WW-G+WW-R.litmus ├── C-WW-G+WW-G+WW-G+WW-R+WW-R+WW-R+WW-R+WW-R.litmus ├── C-WW-G+WW-G+WW-G+WW-R+WW-R+WW-R+WW-R.litmus ├── C-WW-G+WW-G+WW-G+WW-R+WW-R+WW-R.litmus ├── C-WW-G+WW-G+WW-G+WW-R+WW-R.litmus ├── C-WW-G+WW-G+WW-G+WW-R.litmus ├── C-WW-G+WW-G+WW-G.litmus ├── C-WW-G+WW-G+WW-R+WW-G+WW-G+WW-G+WW-R+WW-R.litmus ├── C-WW-G+WW-G+WW-R+WW-G+WW-G+WW-R+WW-R+WW-R.litmus ├── C-WW-G+WW-G+WW-R+WW-G+WW-G+WW-R+WW-R.litmus ├── C-WW-G+WW-G+WW-R+WW-G+WW-G+WW-R.litmus ├── C-WW-G+WW-G+WW-R+WW-R+WW-G+WW-G+WW-R+WW-R.litmus ├── C-WW-G+WW-G+WW-R+WW-R+WW-R+WW-R+WW-R+WW-R.litmus ├── C-WW-G+WW-G+WW-R+WW-R+WW-R+WW-R+WW-R.litmus ├── C-WW-G+WW-G+WW-R+WW-R+WW-R+WW-R.litmus ├── C-WW-G+WW-G+WW-R+WW-R+WW-R.litmus ├── C-WW-G+WW-G+WW-R+WW-R.litmus ├── C-WW-G+WW-G+WW-R.litmus ├── C-WW-G+WW-G.litmus ├── C-WW-G+WW-R+WW-G+WW-G+WW-G+WW-G+WW-G+WW-R.litmus ├── C-WW-G+WW-R+WW-G+WW-G+WW-G+WW-G+WW-R+WW-R.litmus ├── C-WW-G+WW-R+WW-G+WW-G+WW-G+WW-G+WW-R.litmus ├── C-WW-G+WW-R+WW-G+WW-G+WW-G+WW-R+WW-R+WW-R.litmus ├── C-WW-G+WW-R+WW-G+WW-G+WW-G+WW-R+WW-R.litmus ├── C-WW-G+WW-R+WW-G+WW-G+WW-G+WW-R.litmus ├── C-WW-G+WW-R+WW-G+WW-G+WW-R+WW-G+WW-G+WW-R.litmus ├── C-WW-G+WW-R+WW-G+WW-G+WW-R+WW-R+WW-R+WW-R.litmus ├── C-WW-G+WW-R+WW-G+WW-G+WW-R+WW-R+WW-R.litmus ├── C-WW-G+WW-R+WW-G+WW-G+WW-R+WW-R.litmus ├── C-WW-G+WW-R+WW-G+WW-G+WW-R.litmus ├── C-WW-G+WW-R+WW-G+WW-R+WW-G+WW-G+WW-G+WW-R.litmus ├── C-WW-G+WW-R+WW-G+WW-R+WW-G+WW-G+WW-R+WW-R.litmus ├── C-WW-G+WW-R+WW-G+WW-R+WW-G+WW-G+WW-R.litmus ├── C-WW-G+WW-R+WW-G+WW-R+WW-R+WW-G+WW-G+WW-R.litmus ├── C-WW-G+WW-R+WW-G+WW-R+WW-R+WW-G+WW-R.litmus ├── C-WW-G+WW-R+WW-G+WW-R+WW-R+WW-R+WW-G+WW-R.litmus ├── C-WW-G+WW-R+WW-G+WW-R.litmus ├── C-WW-G+WW-R+WW-R+WW-G+WW-G+WW-G+WW-G+WW-R.litmus ├── C-WW-G+WW-R+WW-R+WW-G+WW-G+WW-G+WW-R+WW-R.litmus ├── C-WW-G+WW-R+WW-R+WW-G+WW-G+WW-G+WW-R.litmus ├── C-WW-G+WW-R+WW-R+WW-G+WW-G+WW-R+WW-R+WW-R.litmus ├── C-WW-G+WW-R+WW-R+WW-G+WW-G+WW-R+WW-R.litmus ├── C-WW-G+WW-R+WW-R+WW-G+WW-G+WW-R.litmus ├── C-WW-G+WW-R+WW-R+WW-G+WW-R+WW-G+WW-G+WW-R.litmus ├── C-WW-G+WW-R+WW-R+WW-G+WW-R+WW-R+WW-G+WW-R.litmus ├── C-WW-G+WW-R+WW-R+WW-G+WW-R+WW-R.litmus ├── C-WW-G+WW-R+WW-R+WW-G+WW-R.litmus ├── C-WW-G+WW-R+WW-R+WW-R+WW-G+WW-G+WW-G+WW-R.litmus ├── C-WW-G+WW-R+WW-R+WW-R+WW-G+WW-G+WW-R+WW-R.litmus ├── C-WW-G+WW-R+WW-R+WW-R+WW-G+WW-G+WW-R.litmus ├── C-WW-G+WW-R+WW-R+WW-R+WW-G+WW-R+WW-R+WW-R.litmus ├── C-WW-G+WW-R+WW-R+WW-R+WW-G+WW-R+WW-R.litmus ├── C-WW-G+WW-R+WW-R+WW-R+WW-G+WW-R.litmus ├── C-WW-G+WW-R+WW-R+WW-R+WW-R+WW-G+WW-G+WW-R.litmus ├── C-WW-G+WW-R+WW-R+WW-R+WW-R+WW-G+WW-R+WW-R.litmus ├── C-WW-G+WW-R+WW-R+WW-R+WW-R+WW-G+WW-R.litmus ├── C-WW-G+WW-R+WW-R+WW-R+WW-R+WW-R+WW-G+WW-R.litmus ├── C-WW-G+WW-R+WW-R+WW-R+WW-R+WW-R+WW-R+WW-R.litmus ├── C-WW-G+WW-R+WW-R+WW-R+WW-R+WW-R+WW-R.litmus ├── C-WW-G+WW-R+WW-R+WW-R+WW-R+WW-R.litmus ├── C-WW-G+WW-R+WW-R+WW-R+WW-R.litmus ├── C-WW-G+WW-R+WW-R+WW-R.litmus ├── C-WW-G+WW-R+WW-R.litmus ├── C-WW-G+WW-R.litmus ├── C-WW-G.litmus ├── C-WW-GH+WW-R+WW-R+WW-R+WW-G+WW-R+WW-R.litmus ├── C-WW-GH+WW-R+WW-R+WW-R+WW-G+WW-R.litmus ├── C-WW-GH+WW-R+WW-R+WW-R+WW-R.litmus ├── C-WW-GH+WW-R+WW-R+WW-R.litmus ├── C-WW-GH+WW-R+WW-R.litmus ├── C-WW-GH+WW-R.litmus ├── C-WW-GR+WW-R+WW-R.litmus ├── C-WW-GR+WW-R.litmus ├── C-WW-GR1+WW-R+WW-R.litmus ├── C-WW-GR1+WW-R.litmus ├── C-WW-GR2+WW-R+WW-R.litmus ├── C-WW-GR2+WW-R.litmus ├── C-WW-GR3+WW-R+WW-R.litmus ├── C-WW-GR3+WW-R.litmus ├── C-WW-H+WW-R+WW-R+WW-G+WW-R+WW-R.litmus ├── C-WW-H+WW-R+WW-R+WW-G+WW-R.litmus ├── C-WW-H+WW-R+WW-R+WW-R.litmus ├── C-WW-H+WW-R+WW-R.litmus ├── C-WW-H+WW-R.litmus ├── C-WW-R+WW-R+WW-R+WW-R+WW-R+WW-R+WW-R+WW-R.litmus ├── C-WW-R+WW-R+WW-R+WW-R+WW-R+WW-R+WW-R.litmus ├── C-WW-R+WW-R+WW-R+WW-R+WW-R+WW-R.litmus ├── C-WW-R+WW-R+WW-R+WW-R+WW-R.litmus ├── C-WW-R+WW-R+WW-R+WW-R.litmus ├── C-WW-R+WW-R+WW-R.litmus ├── C-WW-R+WW-R.litmus ├── C-WW-R.litmus └── makelitmustests.sh.out ├── luc ├── PaulRelAcqChain │ ├── @PPC │ ├── @all │ ├── C-RW-rra+RW-ra+RW-rra+CK.litmus │ ├── C-RW-rra+RW-ra+RW-rwa+CK.litmus │ ├── C-RW-rwa+RW-ra+RW-rra+CK.litmus │ ├── C-RW-rwa+RW-ra+RW-rwa+CK.litmus │ ├── RW-rra+RW-ra+RW-rra+CK-PPC.litmus │ ├── RW-rra+RW-ra+RW-rwa+CK-PPC.litmus │ ├── RW-rwa+RW-ra+RW-rra+CK-PPC.litmus │ ├── RW-rwa+RW-ra+RW-rwa+CK-PPC.litmus │ ├── k.txt │ └── ppc.txt ├── RelAcq │ ├── @A │ ├── @T2 │ ├── @T3 │ ├── @all │ ├── @causal │ ├── @three │ ├── @two │ ├── C-2+2W+fencembonceonce+pooncerelease.litmus │ ├── C-2+2W+fencembonceonce+poreleaseonce.litmus │ ├── C-2+2W+fencembonceonce+poreleaserelease.litmus │ ├── C-2+2W+poonceonce+pooncerelease.litmus │ ├── C-2+2W+poonceonce+poreleaseonce.litmus │ ├── C-2+2W+poonceonce+poreleaserelease.litmus │ ├── C-2+2W+pooncerelease+poreleaseonce.litmus │ ├── C-2+2W+pooncerelease+poreleaserelease.litmus │ ├── C-2+2W+pooncereleases.litmus │ ├── C-2+2W+poreleaseonce+poreleaserelease.litmus │ ├── C-2+2W+poreleaseonces.litmus │ ├── C-2+2W+poreleasereleases.litmus │ ├── C-3.2W+fencembonceonce+fencembonceonce+pooncerelease.litmus │ ├── C-3.2W+fencembonceonce+fencembonceonce+poreleaseonce.litmus │ ├── C-3.2W+fencembonceonce+fencembonceonce+poreleaserelease.litmus │ ├── C-3.2W+fencembonceonce+poonceonce+pooncerelease.litmus │ ├── C-3.2W+fencembonceonce+poonceonce+poreleaseonce.litmus │ ├── C-3.2W+fencembonceonce+poonceonce+poreleaserelease.litmus │ ├── C-3.2W+fencembonceonce+pooncerelease+poonceonce.litmus │ ├── C-3.2W+fencembonceonce+pooncerelease+pooncerelease.litmus │ ├── C-3.2W+fencembonceonce+pooncerelease+poreleaseonce.litmus │ ├── C-3.2W+fencembonceonce+pooncerelease+poreleaserelease.litmus │ ├── C-3.2W+fencembonceonce+poreleaseonce+poonceonce.litmus │ ├── C-3.2W+fencembonceonce+poreleaseonce+pooncerelease.litmus │ ├── C-3.2W+fencembonceonce+poreleaseonce+poreleaseonce.litmus │ ├── C-3.2W+fencembonceonce+poreleaseonce+poreleaserelease.litmus │ ├── C-3.2W+fencembonceonce+poreleaserelease+poonceonce.litmus │ ├── C-3.2W+fencembonceonce+poreleaserelease+pooncerelease.litmus │ ├── C-3.2W+fencembonceonce+poreleaserelease+poreleaseonce.litmus │ ├── C-3.2W+fencembonceonce+poreleaserelease+poreleaserelease.litmus │ ├── C-3.2W+poonceonce+poonceonce+pooncerelease.litmus │ ├── C-3.2W+poonceonce+poonceonce+poreleaseonce.litmus │ ├── C-3.2W+poonceonce+poonceonce+poreleaserelease.litmus │ ├── C-3.2W+poonceonce+pooncerelease+pooncerelease.litmus │ ├── C-3.2W+poonceonce+pooncerelease+poreleaseonce.litmus │ ├── C-3.2W+poonceonce+pooncerelease+poreleaserelease.litmus │ ├── C-3.2W+poonceonce+poreleaseonce+pooncerelease.litmus │ ├── C-3.2W+poonceonce+poreleaseonce+poreleaseonce.litmus │ ├── C-3.2W+poonceonce+poreleaseonce+poreleaserelease.litmus │ ├── C-3.2W+poonceonce+poreleaserelease+pooncerelease.litmus │ ├── C-3.2W+poonceonce+poreleaserelease+poreleaseonce.litmus │ ├── C-3.2W+poonceonce+poreleaserelease+poreleaserelease.litmus │ ├── C-3.2W+pooncerelease+pooncerelease+poreleaseonce.litmus │ ├── C-3.2W+pooncerelease+pooncerelease+poreleaserelease.litmus │ ├── C-3.2W+pooncerelease+poreleaseonce+poreleaseonce.litmus │ ├── C-3.2W+pooncerelease+poreleaseonce+poreleaserelease.litmus │ ├── C-3.2W+pooncerelease+poreleaserelease+poreleaseonce.litmus │ ├── C-3.2W+pooncerelease+poreleaserelease+poreleaserelease.litmus │ ├── C-3.2W+pooncereleases.litmus │ ├── C-3.2W+poreleaseonce+poreleaseonce+poreleaserelease.litmus │ ├── C-3.2W+poreleaseonce+poreleaserelease+poreleaserelease.litmus │ ├── C-3.2W+poreleaseonces.litmus │ ├── C-3.2W+poreleasereleases.litmus │ ├── C-3.LB+ctrlonceonce+ctrlonceonce+pooncerelease.litmus │ ├── C-3.LB+ctrlonceonce+poacquireonce+ctrlonceonce.litmus │ ├── C-3.LB+ctrlonceonce+poacquireonce+poacquireonce.litmus │ ├── C-3.LB+ctrlonceonce+poacquireonce+poacquirerelease.litmus │ ├── C-3.LB+ctrlonceonce+poacquireonce+poonceonce.litmus │ ├── C-3.LB+ctrlonceonce+poacquireonce+pooncerelease.litmus │ ├── C-3.LB+ctrlonceonce+poacquirerelease+ctrlonceonce.litmus │ ├── C-3.LB+ctrlonceonce+poacquirerelease+poacquireonce.litmus │ ├── C-3.LB+ctrlonceonce+poacquirerelease+poacquirerelease.litmus │ ├── C-3.LB+ctrlonceonce+poacquirerelease+poonceonce.litmus │ ├── C-3.LB+ctrlonceonce+poacquirerelease+pooncerelease.litmus │ ├── C-3.LB+ctrlonceonce+poonceonce+poacquireonce.litmus │ ├── C-3.LB+ctrlonceonce+poonceonce+poacquirerelease.litmus │ ├── C-3.LB+ctrlonceonce+poonceonce+pooncerelease.litmus │ ├── C-3.LB+ctrlonceonce+pooncerelease+poacquireonce.litmus │ ├── C-3.LB+ctrlonceonce+pooncerelease+poacquirerelease.litmus │ ├── C-3.LB+ctrlonceonce+pooncerelease+poonceonce.litmus │ ├── C-3.LB+ctrlonceonce+pooncerelease+pooncerelease.litmus │ ├── C-3.LB+fencembonceonce+ctrlonceonce+poacquireonce.litmus │ ├── C-3.LB+fencembonceonce+ctrlonceonce+poacquirerelease.litmus │ ├── C-3.LB+fencembonceonce+ctrlonceonce+pooncerelease.litmus │ ├── C-3.LB+fencembonceonce+fencembonceonce+pooncerelease.litmus │ ├── C-3.LB+fencembonceonce+poacquireonce+ctrlonceonce.litmus │ ├── C-3.LB+fencembonceonce+poacquireonce+fencembonceonce.litmus │ ├── C-3.LB+fencembonceonce+poacquireonce+poacquireonce.litmus │ ├── C-3.LB+fencembonceonce+poacquireonce+poacquirerelease.litmus │ ├── C-3.LB+fencembonceonce+poacquireonce+poonceonce.litmus │ ├── C-3.LB+fencembonceonce+poacquireonce+pooncerelease.litmus │ ├── C-3.LB+fencembonceonce+poacquirerelease+ctrlonceonce.litmus │ ├── C-3.LB+fencembonceonce+poacquirerelease+fencembonceonce.litmus │ ├── C-3.LB+fencembonceonce+poacquirerelease+poacquireonce.litmus │ ├── C-3.LB+fencembonceonce+poacquirerelease+poacquirerelease.litmus │ ├── C-3.LB+fencembonceonce+poacquirerelease+poonceonce.litmus │ ├── C-3.LB+fencembonceonce+poacquirerelease+pooncerelease.litmus │ ├── C-3.LB+fencembonceonce+poonceonce+poacquireonce.litmus │ ├── C-3.LB+fencembonceonce+poonceonce+poacquirerelease.litmus │ ├── C-3.LB+fencembonceonce+poonceonce+pooncerelease.litmus │ ├── C-3.LB+fencembonceonce+pooncerelease+ctrlonceonce.litmus │ ├── C-3.LB+fencembonceonce+pooncerelease+poacquireonce.litmus │ ├── C-3.LB+fencembonceonce+pooncerelease+poacquirerelease.litmus │ ├── C-3.LB+fencembonceonce+pooncerelease+poonceonce.litmus │ ├── C-3.LB+fencembonceonce+pooncerelease+pooncerelease.litmus │ ├── C-3.LB+poacquireonce+poacquireonce+poacquirerelease.litmus │ ├── C-3.LB+poacquireonce+poacquireonce+poonceonce.litmus │ ├── C-3.LB+poacquireonce+poacquireonce+pooncerelease.litmus │ ├── C-3.LB+poacquireonce+poacquirerelease+poacquirerelease.litmus │ ├── C-3.LB+poacquireonce+poacquirerelease+poonceonce.litmus │ ├── C-3.LB+poacquireonce+poacquirerelease+pooncerelease.litmus │ ├── C-3.LB+poacquireonce+poonceonce+poacquirerelease.litmus │ ├── C-3.LB+poacquireonce+poonceonce+poonceonce.litmus │ ├── C-3.LB+poacquireonce+poonceonce+pooncerelease.litmus │ ├── C-3.LB+poacquireonce+pooncerelease+poacquirerelease.litmus │ ├── C-3.LB+poacquireonce+pooncerelease+poonceonce.litmus │ ├── C-3.LB+poacquireonce+pooncerelease+pooncerelease.litmus │ ├── C-3.LB+poacquireonces.litmus │ ├── C-3.LB+poacquirerelease+poacquirerelease+poonceonce.litmus │ ├── C-3.LB+poacquirerelease+poacquirerelease+pooncerelease.litmus │ ├── C-3.LB+poacquirerelease+poonceonce+poonceonce.litmus │ ├── C-3.LB+poacquirerelease+poonceonce+pooncerelease.litmus │ ├── C-3.LB+poacquirerelease+pooncerelease+poonceonce.litmus │ ├── C-3.LB+poacquirerelease+pooncerelease+pooncerelease.litmus │ ├── C-3.LB+poacquirereleases.litmus │ ├── C-3.LB+poonceonce+poonceonce+pooncerelease.litmus │ ├── C-3.LB+poonceonce+pooncerelease+pooncerelease.litmus │ ├── C-3.LB+pooncereleases.litmus │ ├── C-3.SB+fencembonceonce+fencembonceonce+poonceacquire.litmus │ ├── C-3.SB+fencembonceonce+fencembonceonce+poreleaseacquire.litmus │ ├── C-3.SB+fencembonceonce+fencembonceonce+poreleaseonce.litmus │ ├── C-3.SB+fencembonceonce+poonceacquire+poonceacquire.litmus │ ├── C-3.SB+fencembonceonce+poonceacquire+poonceonce.litmus │ ├── C-3.SB+fencembonceonce+poonceacquire+poreleaseacquire.litmus │ ├── C-3.SB+fencembonceonce+poonceacquire+poreleaseonce.litmus │ ├── C-3.SB+fencembonceonce+poonceonce+poonceacquire.litmus │ ├── C-3.SB+fencembonceonce+poonceonce+poreleaseacquire.litmus │ ├── C-3.SB+fencembonceonce+poonceonce+poreleaseonce.litmus │ ├── C-3.SB+fencembonceonce+poreleaseacquire+poonceacquire.litmus │ ├── C-3.SB+fencembonceonce+poreleaseacquire+poonceonce.litmus │ ├── C-3.SB+fencembonceonce+poreleaseacquire+poreleaseacquire.litmus │ ├── C-3.SB+fencembonceonce+poreleaseacquire+poreleaseonce.litmus │ ├── C-3.SB+fencembonceonce+poreleaseonce+poonceacquire.litmus │ ├── C-3.SB+fencembonceonce+poreleaseonce+poonceonce.litmus │ ├── C-3.SB+fencembonceonce+poreleaseonce+poreleaseacquire.litmus │ ├── C-3.SB+fencembonceonce+poreleaseonce+poreleaseonce.litmus │ ├── C-3.SB+poonceacquire+poonceacquire+poonceonce.litmus │ ├── C-3.SB+poonceacquire+poonceacquire+poreleaseacquire.litmus │ ├── C-3.SB+poonceacquire+poonceacquire+poreleaseonce.litmus │ ├── C-3.SB+poonceacquire+poonceonce+poonceonce.litmus │ ├── C-3.SB+poonceacquire+poonceonce+poreleaseacquire.litmus │ ├── C-3.SB+poonceacquire+poonceonce+poreleaseonce.litmus │ ├── C-3.SB+poonceacquire+poreleaseacquire+poonceonce.litmus │ ├── C-3.SB+poonceacquire+poreleaseacquire+poreleaseacquire.litmus │ ├── C-3.SB+poonceacquire+poreleaseacquire+poreleaseonce.litmus │ ├── C-3.SB+poonceacquire+poreleaseonce+poonceonce.litmus │ ├── C-3.SB+poonceacquire+poreleaseonce+poreleaseacquire.litmus │ ├── C-3.SB+poonceacquire+poreleaseonce+poreleaseonce.litmus │ ├── C-3.SB+poonceacquires.litmus │ ├── C-3.SB+poonceonce+poonceonce+poreleaseacquire.litmus │ ├── C-3.SB+poonceonce+poonceonce+poreleaseonce.litmus │ ├── C-3.SB+poonceonce+poreleaseacquire+poreleaseacquire.litmus │ ├── C-3.SB+poonceonce+poreleaseacquire+poreleaseonce.litmus │ ├── C-3.SB+poonceonce+poreleaseonce+poreleaseacquire.litmus │ ├── C-3.SB+poonceonce+poreleaseonce+poreleaseonce.litmus │ ├── C-3.SB+poreleaseacquire+poreleaseacquire+poreleaseonce.litmus │ ├── C-3.SB+poreleaseacquire+poreleaseonce+poreleaseonce.litmus │ ├── C-3.SB+poreleaseacquires.litmus │ ├── C-3.SB+poreleaseonces.litmus │ ├── C-IRIW+fencembonceonce+poacquireacquire+OnceRelease.litmus │ ├── C-IRIW+fencembonceonce+poacquireonce+OnceRelease.litmus │ ├── C-IRIW+fencembonceonce+poonceacquire+OnceOnce.litmus │ ├── C-IRIW+fencembonceonce+poonceacquire+OnceRelease.litmus │ ├── C-IRIW+fencembonceonce+poonceacquire+ReleaseRelease.litmus │ ├── C-IRIW+fencembonceonce+poonceonce+OnceRelease.litmus │ ├── C-IRIW+fencembonceonce+poonceonce+ReleaseRelease.litmus │ ├── C-IRIW+fencembonceonces+OnceRelease.litmus │ ├── C-IRIW+fencembonceonces+ReleaseRelease.litmus │ ├── C-IRIW+poacquireacquire+fencembonceonce+OnceOnce.litmus │ ├── C-IRIW+poacquireacquire+fencembonceonce+OnceRelease.litmus │ ├── C-IRIW+poacquireacquire+fencembonceonce+ReleaseRelease.litmus │ ├── C-IRIW+poacquireacquire+poacquireonce+OnceOnce.litmus │ ├── C-IRIW+poacquireacquire+poacquireonce+OnceRelease.litmus │ ├── C-IRIW+poacquireacquire+poacquireonce+ReleaseRelease.litmus │ ├── C-IRIW+poacquireacquire+poonceacquire+OnceOnce.litmus │ ├── C-IRIW+poacquireacquire+poonceacquire+OnceRelease.litmus │ ├── C-IRIW+poacquireacquire+poonceacquire+ReleaseRelease.litmus │ ├── C-IRIW+poacquireacquire+poonceonce+OnceOnce.litmus │ ├── C-IRIW+poacquireacquire+poonceonce+OnceRelease.litmus │ ├── C-IRIW+poacquireacquire+poonceonce+ReleaseRelease.litmus │ ├── C-IRIW+poacquireacquires+OnceOnce.litmus │ ├── C-IRIW+poacquireacquires+OnceRelease.litmus │ ├── C-IRIW+poacquireacquires+ReleaseRelease.litmus │ ├── C-IRIW+poacquireonce+fencembonceonce+OnceOnce.litmus │ ├── C-IRIW+poacquireonce+fencembonceonce+OnceRelease.litmus │ ├── C-IRIW+poacquireonce+fencembonceonce+ReleaseRelease.litmus │ ├── C-IRIW+poacquireonce+poacquireacquire+OnceRelease.litmus │ ├── C-IRIW+poacquireonce+poonceacquire+OnceOnce.litmus │ ├── C-IRIW+poacquireonce+poonceacquire+OnceRelease.litmus │ ├── C-IRIW+poacquireonce+poonceacquire+ReleaseRelease.litmus │ ├── C-IRIW+poacquireonce+poonceonce+OnceOnce.litmus │ ├── C-IRIW+poacquireonce+poonceonce+OnceRelease.litmus │ ├── C-IRIW+poacquireonce+poonceonce+ReleaseRelease.litmus │ ├── C-IRIW+poacquireonces+OnceOnce.litmus │ ├── C-IRIW+poacquireonces+OnceRelease.litmus │ ├── C-IRIW+poacquireonces+ReleaseRelease.litmus │ ├── C-IRIW+poonceacquire+fencembonceonce+OnceRelease.litmus │ ├── C-IRIW+poonceacquire+poacquireacquire+OnceRelease.litmus │ ├── C-IRIW+poonceacquire+poacquireonce+OnceRelease.litmus │ ├── C-IRIW+poonceacquire+poonceonce+OnceOnce.litmus │ ├── C-IRIW+poonceacquire+poonceonce+OnceRelease.litmus │ ├── C-IRIW+poonceacquire+poonceonce+ReleaseRelease.litmus │ ├── C-IRIW+poonceacquires+OnceOnce.litmus │ ├── C-IRIW+poonceacquires+OnceRelease.litmus │ ├── C-IRIW+poonceacquires+ReleaseRelease.litmus │ ├── C-IRIW+poonceonce+fencembonceonce+OnceRelease.litmus │ ├── C-IRIW+poonceonce+poacquireacquire+OnceRelease.litmus │ ├── C-IRIW+poonceonce+poacquireonce+OnceRelease.litmus │ ├── C-IRIW+poonceonce+poonceacquire+OnceRelease.litmus │ ├── C-IRIW+poonceonces+OnceRelease.litmus │ ├── C-IRIW+poonceonces+ReleaseRelease.litmus │ ├── C-IRRWIW+fencembonceonce+ctrlonceonce+OnceRelease.litmus │ ├── C-IRRWIW+fencembonceonce+ctrlonceonce+ReleaseOnce.litmus │ ├── C-IRRWIW+fencembonceonce+ctrlonceonce+ReleaseRelease.litmus │ ├── C-IRRWIW+fencembonceonce+poacquireonce+OnceOnce.litmus │ ├── C-IRRWIW+fencembonceonce+poacquireonce+OnceRelease.litmus │ ├── C-IRRWIW+fencembonceonce+poacquireonce+ReleaseOnce.litmus │ ├── C-IRRWIW+fencembonceonce+poacquireonce+ReleaseRelease.litmus │ ├── C-IRRWIW+fencembonceonce+poacquirerelease+OnceOnce.litmus │ ├── C-IRRWIW+fencembonceonce+poacquirerelease+OnceRelease.litmus │ ├── C-IRRWIW+fencembonceonce+poacquirerelease+ReleaseOnce.litmus │ ├── C-IRRWIW+fencembonceonce+poacquirerelease+ReleaseRelease.litmus │ ├── C-IRRWIW+fencembonceonce+poonceonce+OnceRelease.litmus │ ├── C-IRRWIW+fencembonceonce+poonceonce+ReleaseOnce.litmus │ ├── C-IRRWIW+fencembonceonce+poonceonce+ReleaseRelease.litmus │ ├── C-IRRWIW+fencembonceonce+pooncerelease+OnceOnce.litmus │ ├── C-IRRWIW+fencembonceonce+pooncerelease+OnceRelease.litmus │ ├── C-IRRWIW+fencembonceonce+pooncerelease+ReleaseOnce.litmus │ ├── C-IRRWIW+fencembonceonce+pooncerelease+ReleaseRelease.litmus │ ├── C-IRRWIW+fencembonceonces+OnceRelease.litmus │ ├── C-IRRWIW+fencembonceonces+ReleaseOnce.litmus │ ├── C-IRRWIW+fencembonceonces+ReleaseRelease.litmus │ ├── C-IRRWIW+poacquireacquire+ctrlonceonce+OnceOnce.litmus │ ├── C-IRRWIW+poacquireacquire+ctrlonceonce+OnceRelease.litmus │ ├── C-IRRWIW+poacquireacquire+ctrlonceonce+ReleaseOnce.litmus │ ├── C-IRRWIW+poacquireacquire+ctrlonceonce+ReleaseRelease.litmus │ ├── C-IRRWIW+poacquireacquire+fencembonceonce+OnceOnce.litmus │ ├── C-IRRWIW+poacquireacquire+fencembonceonce+OnceRelease.litmus │ ├── C-IRRWIW+poacquireacquire+fencembonceonce+ReleaseOnce.litmus │ ├── C-IRRWIW+poacquireacquire+fencembonceonce+ReleaseRelease.litmus │ ├── C-IRRWIW+poacquireacquire+poacquireonce+OnceOnce.litmus │ ├── C-IRRWIW+poacquireacquire+poacquireonce+OnceRelease.litmus │ ├── C-IRRWIW+poacquireacquire+poacquireonce+ReleaseOnce.litmus │ ├── C-IRRWIW+poacquireacquire+poacquireonce+ReleaseRelease.litmus │ ├── C-IRRWIW+poacquireacquire+poacquirerelease+OnceOnce.litmus │ ├── C-IRRWIW+poacquireacquire+poacquirerelease+OnceRelease.litmus │ ├── C-IRRWIW+poacquireacquire+poacquirerelease+ReleaseOnce.litmus │ ├── C-IRRWIW+poacquireacquire+poacquirerelease+ReleaseRelease.litmus │ ├── C-IRRWIW+poacquireacquire+poonceonce+OnceOnce.litmus │ ├── C-IRRWIW+poacquireacquire+poonceonce+OnceRelease.litmus │ ├── C-IRRWIW+poacquireacquire+poonceonce+ReleaseOnce.litmus │ ├── C-IRRWIW+poacquireacquire+poonceonce+ReleaseRelease.litmus │ ├── C-IRRWIW+poacquireacquire+pooncerelease+OnceOnce.litmus │ ├── C-IRRWIW+poacquireacquire+pooncerelease+OnceRelease.litmus │ ├── C-IRRWIW+poacquireacquire+pooncerelease+ReleaseOnce.litmus │ ├── C-IRRWIW+poacquireacquire+pooncerelease+ReleaseRelease.litmus │ ├── C-IRRWIW+poacquireonce+ctrlonceonce+OnceOnce.litmus │ ├── C-IRRWIW+poacquireonce+ctrlonceonce+OnceRelease.litmus │ ├── C-IRRWIW+poacquireonce+ctrlonceonce+ReleaseOnce.litmus │ ├── C-IRRWIW+poacquireonce+ctrlonceonce+ReleaseRelease.litmus │ ├── C-IRRWIW+poacquireonce+fencembonceonce+OnceOnce.litmus │ ├── C-IRRWIW+poacquireonce+fencembonceonce+OnceRelease.litmus │ ├── C-IRRWIW+poacquireonce+fencembonceonce+ReleaseOnce.litmus │ ├── C-IRRWIW+poacquireonce+fencembonceonce+ReleaseRelease.litmus │ ├── C-IRRWIW+poacquireonce+poacquirerelease+OnceOnce.litmus │ ├── C-IRRWIW+poacquireonce+poacquirerelease+OnceRelease.litmus │ ├── C-IRRWIW+poacquireonce+poacquirerelease+ReleaseOnce.litmus │ ├── C-IRRWIW+poacquireonce+poacquirerelease+ReleaseRelease.litmus │ ├── C-IRRWIW+poacquireonce+poonceonce+OnceOnce.litmus │ ├── C-IRRWIW+poacquireonce+poonceonce+OnceRelease.litmus │ ├── C-IRRWIW+poacquireonce+poonceonce+ReleaseOnce.litmus │ ├── C-IRRWIW+poacquireonce+poonceonce+ReleaseRelease.litmus │ ├── C-IRRWIW+poacquireonce+pooncerelease+OnceOnce.litmus │ ├── C-IRRWIW+poacquireonce+pooncerelease+OnceRelease.litmus │ ├── C-IRRWIW+poacquireonce+pooncerelease+ReleaseOnce.litmus │ ├── C-IRRWIW+poacquireonce+pooncerelease+ReleaseRelease.litmus │ ├── C-IRRWIW+poacquireonces+OnceOnce.litmus │ ├── C-IRRWIW+poacquireonces+OnceRelease.litmus │ ├── C-IRRWIW+poacquireonces+ReleaseOnce.litmus │ ├── C-IRRWIW+poacquireonces+ReleaseRelease.litmus │ ├── C-IRRWIW+poonceacquire+ctrlonceonce+OnceOnce.litmus │ ├── C-IRRWIW+poonceacquire+ctrlonceonce+OnceRelease.litmus │ ├── C-IRRWIW+poonceacquire+ctrlonceonce+ReleaseOnce.litmus │ ├── C-IRRWIW+poonceacquire+ctrlonceonce+ReleaseRelease.litmus │ ├── C-IRRWIW+poonceacquire+fencembonceonce+OnceOnce.litmus │ ├── C-IRRWIW+poonceacquire+fencembonceonce+OnceRelease.litmus │ ├── C-IRRWIW+poonceacquire+fencembonceonce+ReleaseOnce.litmus │ ├── C-IRRWIW+poonceacquire+fencembonceonce+ReleaseRelease.litmus │ ├── C-IRRWIW+poonceacquire+poacquireonce+OnceOnce.litmus │ ├── C-IRRWIW+poonceacquire+poacquireonce+OnceRelease.litmus │ ├── C-IRRWIW+poonceacquire+poacquireonce+ReleaseOnce.litmus │ ├── C-IRRWIW+poonceacquire+poacquireonce+ReleaseRelease.litmus │ ├── C-IRRWIW+poonceacquire+poacquirerelease+OnceOnce.litmus │ ├── C-IRRWIW+poonceacquire+poacquirerelease+OnceRelease.litmus │ ├── C-IRRWIW+poonceacquire+poacquirerelease+ReleaseOnce.litmus │ ├── C-IRRWIW+poonceacquire+poacquirerelease+ReleaseRelease.litmus │ ├── C-IRRWIW+poonceacquire+poonceonce+OnceOnce.litmus │ ├── C-IRRWIW+poonceacquire+poonceonce+OnceRelease.litmus │ ├── C-IRRWIW+poonceacquire+poonceonce+ReleaseOnce.litmus │ ├── C-IRRWIW+poonceacquire+poonceonce+ReleaseRelease.litmus │ ├── C-IRRWIW+poonceacquire+pooncerelease+OnceOnce.litmus │ ├── C-IRRWIW+poonceacquire+pooncerelease+OnceRelease.litmus │ ├── C-IRRWIW+poonceacquire+pooncerelease+ReleaseOnce.litmus │ ├── C-IRRWIW+poonceacquire+pooncerelease+ReleaseRelease.litmus │ ├── C-IRRWIW+poonceonce+ctrlonceonce+OnceRelease.litmus │ ├── C-IRRWIW+poonceonce+ctrlonceonce+ReleaseOnce.litmus │ ├── C-IRRWIW+poonceonce+ctrlonceonce+ReleaseRelease.litmus │ ├── C-IRRWIW+poonceonce+fencembonceonce+OnceRelease.litmus │ ├── C-IRRWIW+poonceonce+fencembonceonce+ReleaseOnce.litmus │ ├── C-IRRWIW+poonceonce+fencembonceonce+ReleaseRelease.litmus │ ├── C-IRRWIW+poonceonce+poacquireonce+OnceOnce.litmus │ ├── C-IRRWIW+poonceonce+poacquireonce+OnceRelease.litmus │ ├── C-IRRWIW+poonceonce+poacquireonce+ReleaseOnce.litmus │ ├── C-IRRWIW+poonceonce+poacquireonce+ReleaseRelease.litmus │ ├── C-IRRWIW+poonceonce+poacquirerelease+OnceOnce.litmus │ ├── C-IRRWIW+poonceonce+poacquirerelease+OnceRelease.litmus │ ├── C-IRRWIW+poonceonce+poacquirerelease+ReleaseOnce.litmus │ ├── C-IRRWIW+poonceonce+poacquirerelease+ReleaseRelease.litmus │ ├── C-IRRWIW+poonceonce+pooncerelease+OnceOnce.litmus │ ├── C-IRRWIW+poonceonce+pooncerelease+OnceRelease.litmus │ ├── C-IRRWIW+poonceonce+pooncerelease+ReleaseOnce.litmus │ ├── C-IRRWIW+poonceonce+pooncerelease+ReleaseRelease.litmus │ ├── C-IRRWIW+poonceonces+OnceRelease.litmus │ ├── C-IRRWIW+poonceonces+ReleaseOnce.litmus │ ├── C-IRRWIW+poonceonces+ReleaseRelease.litmus │ ├── C-IRWIW+ctrlonceonce+fencembonceonce+OnceRelease.litmus │ ├── C-IRWIW+ctrlonceonce+poacquireonce+OnceRelease.litmus │ ├── C-IRWIW+ctrlonceonce+poacquirerelease+OnceRelease.litmus │ ├── C-IRWIW+ctrlonceonce+poonceonce+OnceRelease.litmus │ ├── C-IRWIW+ctrlonceonce+poonceonce+ReleaseRelease.litmus │ ├── C-IRWIW+ctrlonceonce+pooncerelease+OnceOnce.litmus │ ├── C-IRWIW+ctrlonceonce+pooncerelease+OnceRelease.litmus │ ├── C-IRWIW+ctrlonceonce+pooncerelease+ReleaseRelease.litmus │ ├── C-IRWIW+ctrlonceonces+OnceRelease.litmus │ ├── C-IRWIW+ctrlonceonces+ReleaseRelease.litmus │ ├── C-IRWIW+fencembonceonce+ctrlonceonce+OnceRelease.litmus │ ├── C-IRWIW+fencembonceonce+ctrlonceonce+ReleaseRelease.litmus │ ├── C-IRWIW+fencembonceonce+poacquireonce+OnceRelease.litmus │ ├── C-IRWIW+fencembonceonce+poacquirerelease+OnceRelease.litmus │ ├── C-IRWIW+fencembonceonce+poonceonce+OnceRelease.litmus │ ├── C-IRWIW+fencembonceonce+poonceonce+ReleaseRelease.litmus │ ├── C-IRWIW+fencembonceonce+pooncerelease+OnceOnce.litmus │ ├── C-IRWIW+fencembonceonce+pooncerelease+OnceRelease.litmus │ ├── C-IRWIW+fencembonceonce+pooncerelease+ReleaseRelease.litmus │ ├── C-IRWIW+fencembonceonces+OnceRelease.litmus │ ├── C-IRWIW+fencembonceonces+ReleaseRelease.litmus │ ├── C-IRWIW+poacquireonce+ctrlonceonce+OnceOnce.litmus │ ├── C-IRWIW+poacquireonce+ctrlonceonce+OnceRelease.litmus │ ├── C-IRWIW+poacquireonce+ctrlonceonce+ReleaseRelease.litmus │ ├── C-IRWIW+poacquireonce+fencembonceonce+OnceOnce.litmus │ ├── C-IRWIW+poacquireonce+fencembonceonce+OnceRelease.litmus │ ├── C-IRWIW+poacquireonce+fencembonceonce+ReleaseRelease.litmus │ ├── C-IRWIW+poacquireonce+poacquirerelease+OnceOnce.litmus │ ├── C-IRWIW+poacquireonce+poacquirerelease+OnceRelease.litmus │ ├── C-IRWIW+poacquireonce+poacquirerelease+ReleaseRelease.litmus │ ├── C-IRWIW+poacquireonce+poonceonce+OnceOnce.litmus │ ├── C-IRWIW+poacquireonce+poonceonce+OnceRelease.litmus │ ├── C-IRWIW+poacquireonce+poonceonce+ReleaseRelease.litmus │ ├── C-IRWIW+poacquireonce+pooncerelease+OnceOnce.litmus │ ├── C-IRWIW+poacquireonce+pooncerelease+OnceRelease.litmus │ ├── C-IRWIW+poacquireonce+pooncerelease+ReleaseRelease.litmus │ ├── C-IRWIW+poacquireonces+OnceOnce.litmus │ ├── C-IRWIW+poacquireonces+OnceRelease.litmus │ ├── C-IRWIW+poacquireonces+ReleaseRelease.litmus │ ├── C-IRWIW+poacquirerelease+ctrlonceonce+OnceOnce.litmus │ ├── C-IRWIW+poacquirerelease+ctrlonceonce+OnceRelease.litmus │ ├── C-IRWIW+poacquirerelease+ctrlonceonce+ReleaseRelease.litmus │ ├── C-IRWIW+poacquirerelease+fencembonceonce+OnceOnce.litmus │ ├── C-IRWIW+poacquirerelease+fencembonceonce+OnceRelease.litmus │ ├── C-IRWIW+poacquirerelease+fencembonceonce+ReleaseRelease.litmus │ ├── C-IRWIW+poacquirerelease+poacquireonce+OnceRelease.litmus │ ├── C-IRWIW+poacquirerelease+poonceonce+OnceOnce.litmus │ ├── C-IRWIW+poacquirerelease+poonceonce+OnceRelease.litmus │ ├── C-IRWIW+poacquirerelease+poonceonce+ReleaseRelease.litmus │ ├── C-IRWIW+poacquirerelease+pooncerelease+OnceOnce.litmus │ ├── C-IRWIW+poacquirerelease+pooncerelease+OnceRelease.litmus │ ├── C-IRWIW+poacquirerelease+pooncerelease+ReleaseRelease.litmus │ ├── C-IRWIW+poacquirereleases+OnceOnce.litmus │ ├── C-IRWIW+poacquirereleases+OnceRelease.litmus │ ├── C-IRWIW+poacquirereleases+ReleaseRelease.litmus │ ├── C-IRWIW+poonceonce+ctrlonceonce+OnceRelease.litmus │ ├── C-IRWIW+poonceonce+fencembonceonce+OnceRelease.litmus │ ├── C-IRWIW+poonceonce+poacquireonce+OnceRelease.litmus │ ├── C-IRWIW+poonceonce+poacquirerelease+OnceRelease.litmus │ ├── C-IRWIW+poonceonce+pooncerelease+OnceOnce.litmus │ ├── C-IRWIW+poonceonce+pooncerelease+OnceRelease.litmus │ ├── C-IRWIW+poonceonce+pooncerelease+ReleaseRelease.litmus │ ├── C-IRWIW+poonceonces+OnceRelease.litmus │ ├── C-IRWIW+poonceonces+ReleaseRelease.litmus │ ├── C-IRWIW+pooncerelease+ctrlonceonce+OnceRelease.litmus │ ├── C-IRWIW+pooncerelease+fencembonceonce+OnceRelease.litmus │ ├── C-IRWIW+pooncerelease+poacquireonce+OnceRelease.litmus │ ├── C-IRWIW+pooncerelease+poacquirerelease+OnceRelease.litmus │ ├── C-IRWIW+pooncerelease+poonceonce+OnceRelease.litmus │ ├── C-IRWIW+pooncereleases+OnceOnce.litmus │ ├── C-IRWIW+pooncereleases+OnceRelease.litmus │ ├── C-IRWIW+pooncereleases+ReleaseRelease.litmus │ ├── C-ISA2+fencembonceonce+ctrlonceonce+poacquireacquire.litmus │ ├── C-ISA2+fencembonceonce+ctrlonceonce+poacquireonce.litmus │ ├── C-ISA2+fencembonceonce+ctrlonceonce+poonceacquire.litmus │ ├── C-ISA2+fencembonceonce+fencembonceonce+poacquireacquire.litmus │ ├── C-ISA2+fencembonceonce+fencembonceonce+poacquireonce.litmus │ ├── C-ISA2+fencembonceonce+fencembonceonce+poonceacquire.litmus │ ├── C-ISA2+fencembonceonce+poacquireonce+fencembonceonce.litmus │ ├── C-ISA2+fencembonceonce+poacquireonce+poacquireacquire.litmus │ ├── C-ISA2+fencembonceonce+poacquireonce+poacquireonce.litmus │ ├── C-ISA2+fencembonceonce+poacquireonce+poonceacquire.litmus │ ├── C-ISA2+fencembonceonce+poacquireonce+poonceonce.litmus │ ├── C-ISA2+fencembonceonce+poacquirerelease+fencembonceonce.litmus │ ├── C-ISA2+fencembonceonce+poacquirerelease+poacquireacquire.litmus │ ├── C-ISA2+fencembonceonce+poacquirerelease+poacquireonce.litmus │ ├── C-ISA2+fencembonceonce+poacquirerelease+poonceacquire.litmus │ ├── C-ISA2+fencembonceonce+poacquirerelease+poonceonce.litmus │ ├── C-ISA2+fencembonceonce+poonceonce+poacquireacquire.litmus │ ├── C-ISA2+fencembonceonce+poonceonce+poacquireonce.litmus │ ├── C-ISA2+fencembonceonce+poonceonce+poonceacquire.litmus │ ├── C-ISA2+fencembonceonce+pooncerelease+fencembonceonce.litmus │ ├── C-ISA2+fencembonceonce+pooncerelease+poacquireacquire.litmus │ ├── C-ISA2+fencembonceonce+pooncerelease+poacquireonce.litmus │ ├── C-ISA2+fencembonceonce+pooncerelease+poonceacquire.litmus │ ├── C-ISA2+fencembonceonce+pooncerelease+poonceonce.litmus │ ├── C-ISA2+poonceonce+ctrlonceonce+poacquireacquire.litmus │ ├── C-ISA2+poonceonce+ctrlonceonce+poacquireonce.litmus │ ├── C-ISA2+poonceonce+ctrlonceonce+poonceacquire.litmus │ ├── C-ISA2+poonceonce+fencembonceonce+poacquireacquire.litmus │ ├── C-ISA2+poonceonce+fencembonceonce+poacquireonce.litmus │ ├── C-ISA2+poonceonce+fencembonceonce+poonceacquire.litmus │ ├── C-ISA2+poonceonce+poacquireonce+fencembonceonce.litmus │ ├── C-ISA2+poonceonce+poacquireonce+poacquireacquire.litmus │ ├── C-ISA2+poonceonce+poacquireonce+poacquireonce.litmus │ ├── C-ISA2+poonceonce+poacquireonce+poonceacquire.litmus │ ├── C-ISA2+poonceonce+poacquireonce+poonceonce.litmus │ ├── C-ISA2+poonceonce+poacquirerelease+fencembonceonce.litmus │ ├── C-ISA2+poonceonce+poacquirerelease+poacquireacquire.litmus │ ├── C-ISA2+poonceonce+poacquirerelease+poacquireonce.litmus │ ├── C-ISA2+poonceonce+poacquirerelease+poonceacquire.litmus │ ├── C-ISA2+poonceonce+poacquirerelease+poonceonce.litmus │ ├── C-ISA2+poonceonce+poonceonce+poacquireacquire.litmus │ ├── C-ISA2+poonceonce+poonceonce+poacquireonce.litmus │ ├── C-ISA2+poonceonce+poonceonce+poonceacquire.litmus │ ├── C-ISA2+poonceonce+pooncerelease+fencembonceonce.litmus │ ├── C-ISA2+poonceonce+pooncerelease+poacquireacquire.litmus │ ├── C-ISA2+poonceonce+pooncerelease+poacquireonce.litmus │ ├── C-ISA2+poonceonce+pooncerelease+poonceacquire.litmus │ ├── C-ISA2+poonceonce+pooncerelease+poonceonce.litmus │ ├── C-ISA2+pooncerelease+ctrlonceonce+fencembonceonce.litmus │ ├── C-ISA2+pooncerelease+ctrlonceonce+poacquireacquire.litmus │ ├── C-ISA2+pooncerelease+ctrlonceonce+poacquireonce.litmus │ ├── C-ISA2+pooncerelease+ctrlonceonce+poonceacquire.litmus │ ├── C-ISA2+pooncerelease+ctrlonceonce+poonceonce.litmus │ ├── C-ISA2+pooncerelease+fencembonceonce+fencembonceonce.litmus │ ├── C-ISA2+pooncerelease+fencembonceonce+poacquireacquire.litmus │ ├── C-ISA2+pooncerelease+fencembonceonce+poacquireonce.litmus │ ├── C-ISA2+pooncerelease+fencembonceonce+poonceacquire.litmus │ ├── C-ISA2+pooncerelease+fencembonceonce+poonceonce.litmus │ ├── C-ISA2+pooncerelease+poacquireonce+fencembonceonce.litmus │ ├── C-ISA2+pooncerelease+poacquireonce+poacquireacquire.litmus │ ├── C-ISA2+pooncerelease+poacquireonce+poacquireonce.litmus │ ├── C-ISA2+pooncerelease+poacquireonce+poonceacquire.litmus │ ├── C-ISA2+pooncerelease+poacquireonce+poonceonce.litmus │ ├── C-ISA2+pooncerelease+poacquirerelease+fencembonceonce.litmus │ ├── C-ISA2+pooncerelease+poacquirerelease+poacquireacquire.litmus │ ├── C-ISA2+pooncerelease+poacquirerelease+poacquireonce.litmus │ ├── C-ISA2+pooncerelease+poacquirerelease+poonceacquire.litmus │ ├── C-ISA2+pooncerelease+poacquirerelease+poonceonce.litmus │ ├── C-ISA2+pooncerelease+poonceonce+fencembonceonce.litmus │ ├── C-ISA2+pooncerelease+poonceonce+poacquireacquire.litmus │ ├── C-ISA2+pooncerelease+poonceonce+poacquireonce.litmus │ ├── C-ISA2+pooncerelease+poonceonce+poonceacquire.litmus │ ├── C-ISA2+pooncerelease+poonceonce+poonceonce.litmus │ ├── C-ISA2+pooncerelease+pooncerelease+fencembonceonce.litmus │ ├── C-ISA2+pooncerelease+pooncerelease+poacquireacquire.litmus │ ├── C-ISA2+pooncerelease+pooncerelease+poacquireonce.litmus │ ├── C-ISA2+pooncerelease+pooncerelease+poonceacquire.litmus │ ├── C-ISA2+pooncerelease+pooncerelease+poonceonce.litmus │ ├── C-ISA2+poreleaseonce+ctrlonceonce+fencembonceonce.litmus │ ├── C-ISA2+poreleaseonce+ctrlonceonce+poacquireacquire.litmus │ ├── C-ISA2+poreleaseonce+ctrlonceonce+poacquireonce.litmus │ ├── C-ISA2+poreleaseonce+ctrlonceonce+poonceacquire.litmus │ ├── C-ISA2+poreleaseonce+ctrlonceonce+poonceonce.litmus │ ├── C-ISA2+poreleaseonce+fencembonceonce+fencembonceonce.litmus │ ├── C-ISA2+poreleaseonce+fencembonceonce+poacquireacquire.litmus │ ├── C-ISA2+poreleaseonce+fencembonceonce+poacquireonce.litmus │ ├── C-ISA2+poreleaseonce+fencembonceonce+poonceacquire.litmus │ ├── C-ISA2+poreleaseonce+fencembonceonce+poonceonce.litmus │ ├── C-ISA2+poreleaseonce+poacquireonce+fencembonceonce.litmus │ ├── C-ISA2+poreleaseonce+poacquireonce+poacquireacquire.litmus │ ├── C-ISA2+poreleaseonce+poacquireonce+poacquireonce.litmus │ ├── C-ISA2+poreleaseonce+poacquireonce+poonceacquire.litmus │ ├── C-ISA2+poreleaseonce+poacquireonce+poonceonce.litmus │ ├── C-ISA2+poreleaseonce+poacquirerelease+fencembonceonce.litmus │ ├── C-ISA2+poreleaseonce+poacquirerelease+poacquireacquire.litmus │ ├── C-ISA2+poreleaseonce+poacquirerelease+poacquireonce.litmus │ ├── C-ISA2+poreleaseonce+poacquirerelease+poonceacquire.litmus │ ├── C-ISA2+poreleaseonce+poacquirerelease+poonceonce.litmus │ ├── C-ISA2+poreleaseonce+poonceonce+fencembonceonce.litmus │ ├── C-ISA2+poreleaseonce+poonceonce+poacquireacquire.litmus │ ├── C-ISA2+poreleaseonce+poonceonce+poacquireonce.litmus │ ├── C-ISA2+poreleaseonce+poonceonce+poonceacquire.litmus │ ├── C-ISA2+poreleaseonce+poonceonce+poonceonce.litmus │ ├── C-ISA2+poreleaseonce+pooncerelease+fencembonceonce.litmus │ ├── C-ISA2+poreleaseonce+pooncerelease+poacquireacquire.litmus │ ├── C-ISA2+poreleaseonce+pooncerelease+poacquireonce.litmus │ ├── C-ISA2+poreleaseonce+pooncerelease+poonceacquire.litmus │ ├── C-ISA2+poreleaseonce+pooncerelease+poonceonce.litmus │ ├── C-ISA2+poreleaserelease+ctrlonceonce+fencembonceonce.litmus │ ├── C-ISA2+poreleaserelease+ctrlonceonce+poacquireacquire.litmus │ ├── C-ISA2+poreleaserelease+ctrlonceonce+poacquireonce.litmus │ ├── C-ISA2+poreleaserelease+ctrlonceonce+poonceacquire.litmus │ ├── C-ISA2+poreleaserelease+ctrlonceonce+poonceonce.litmus │ ├── C-ISA2+poreleaserelease+fencembonceonce+fencembonceonce.litmus │ ├── C-ISA2+poreleaserelease+fencembonceonce+poacquireacquire.litmus │ ├── C-ISA2+poreleaserelease+fencembonceonce+poacquireonce.litmus │ ├── C-ISA2+poreleaserelease+fencembonceonce+poonceacquire.litmus │ ├── C-ISA2+poreleaserelease+fencembonceonce+poonceonce.litmus │ ├── C-ISA2+poreleaserelease+poacquireonce+fencembonceonce.litmus │ ├── C-ISA2+poreleaserelease+poacquireonce+poacquireacquire.litmus │ ├── C-ISA2+poreleaserelease+poacquireonce+poacquireonce.litmus │ ├── C-ISA2+poreleaserelease+poacquireonce+poonceacquire.litmus │ ├── C-ISA2+poreleaserelease+poacquireonce+poonceonce.litmus │ ├── C-ISA2+poreleaserelease+poacquirerelease+fencembonceonce.litmus │ ├── C-ISA2+poreleaserelease+poacquirerelease+poacquireacquire.litmus │ ├── C-ISA2+poreleaserelease+poacquirerelease+poacquireonce.litmus │ ├── C-ISA2+poreleaserelease+poacquirerelease+poonceacquire.litmus │ ├── C-ISA2+poreleaserelease+poacquirerelease+poonceonce.litmus │ ├── C-ISA2+poreleaserelease+poonceonce+fencembonceonce.litmus │ ├── C-ISA2+poreleaserelease+poonceonce+poacquireacquire.litmus │ ├── C-ISA2+poreleaserelease+poonceonce+poacquireonce.litmus │ ├── C-ISA2+poreleaserelease+poonceonce+poonceacquire.litmus │ ├── C-ISA2+poreleaserelease+poonceonce+poonceonce.litmus │ ├── C-ISA2+poreleaserelease+pooncerelease+fencembonceonce.litmus │ ├── C-ISA2+poreleaserelease+pooncerelease+poacquireacquire.litmus │ ├── C-ISA2+poreleaserelease+pooncerelease+poacquireonce.litmus │ ├── C-ISA2+poreleaserelease+pooncerelease+poonceacquire.litmus │ ├── C-ISA2+poreleaserelease+pooncerelease+poonceonce.litmus │ ├── C-LB+ctrlonceonce+poacquireonce.litmus │ ├── C-LB+ctrlonceonce+poacquirerelease.litmus │ ├── C-LB+ctrlonceonce+pooncerelease.litmus │ ├── C-LB+fencembonceonce+poacquireonce.litmus │ ├── C-LB+fencembonceonce+poacquirerelease.litmus │ ├── C-LB+fencembonceonce+pooncerelease.litmus │ ├── C-LB+poacquireonce+poacquirerelease.litmus │ ├── C-LB+poacquireonce+poonceonce.litmus │ ├── C-LB+poacquireonce+pooncerelease.litmus │ ├── C-LB+poacquireonces.litmus │ ├── C-LB+poacquirerelease+poonceonce.litmus │ ├── C-LB+poacquirerelease+pooncerelease.litmus │ ├── C-LB+poacquirereleases.litmus │ ├── C-LB+poonceonce+pooncerelease.litmus │ ├── C-LB+pooncereleases.litmus │ ├── C-MP+fencembonceonce+poacquireacquire.litmus │ ├── C-MP+fencembonceonce+poacquireonce.litmus │ ├── C-MP+fencembonceonce+poonceacquire.litmus │ ├── C-MP+poonceonce+poacquireacquire.litmus │ ├── C-MP+poonceonce+poacquireonce.litmus │ ├── C-MP+poonceonce+poonceacquire.litmus │ ├── C-MP+pooncerelease+fencembonceonce.litmus │ ├── C-MP+pooncerelease+poacquireacquire.litmus │ ├── C-MP+pooncerelease+poacquireonce.litmus │ ├── C-MP+pooncerelease+poonceacquire.litmus │ ├── C-MP+pooncerelease+poonceonce.litmus │ ├── C-MP+poreleaseonce+fencembonceonce.litmus │ ├── C-MP+poreleaseonce+poacquireacquire.litmus │ ├── C-MP+poreleaseonce+poacquireonce.litmus │ ├── C-MP+poreleaseonce+poonceacquire.litmus │ ├── C-MP+poreleaseonce+poonceonce.litmus │ ├── C-MP+poreleaserelease+fencembonceonce.litmus │ ├── C-MP+poreleaserelease+poacquireacquire.litmus │ ├── C-MP+poreleaserelease+poacquireonce.litmus │ ├── C-MP+poreleaserelease+poonceacquire.litmus │ ├── C-MP+poreleaserelease+poonceonce.litmus │ ├── C-R+fencembonceonce+poonceacquire.litmus │ ├── C-R+fencembonceonce+poreleaseacquire.litmus │ ├── C-R+fencembonceonce+poreleaseonce.litmus │ ├── C-R+poonceonce+poonceacquire.litmus │ ├── C-R+poonceonce+poreleaseacquire.litmus │ ├── C-R+poonceonce+poreleaseonce.litmus │ ├── C-R+pooncerelease+fencembonceonce.litmus │ ├── C-R+pooncerelease+poonceacquire.litmus │ ├── C-R+pooncerelease+poonceonce.litmus │ ├── C-R+pooncerelease+poreleaseacquire.litmus │ ├── C-R+pooncerelease+poreleaseonce.litmus │ ├── C-R+poreleaseonce+fencembonceonce.litmus │ ├── C-R+poreleaseonce+poonceacquire.litmus │ ├── C-R+poreleaseonce+poonceonce.litmus │ ├── C-R+poreleaseonce+poreleaseacquire.litmus │ ├── C-R+poreleaseonces.litmus │ ├── C-R+poreleaserelease+fencembonceonce.litmus │ ├── C-R+poreleaserelease+poonceacquire.litmus │ ├── C-R+poreleaserelease+poonceonce.litmus │ ├── C-R+poreleaserelease+poreleaseacquire.litmus │ ├── C-R+poreleaserelease+poreleaseonce.litmus │ ├── C-RWC+fencembonceonce+poonceacquire+Once.litmus │ ├── C-RWC+fencembonceonce+poonceacquire+Release.litmus │ ├── C-RWC+fencembonceonce+poonceonce+Release.litmus │ ├── C-RWC+fencembonceonce+poreleaseacquire+Once.litmus │ ├── C-RWC+fencembonceonce+poreleaseacquire+Release.litmus │ ├── C-RWC+fencembonceonce+poreleaseonce+Once.litmus │ ├── C-RWC+fencembonceonce+poreleaseonce+Release.litmus │ ├── C-RWC+fencembonceonces+Release.litmus │ ├── C-RWC+poacquireacquire+fencembonceonce+Once.litmus │ ├── C-RWC+poacquireacquire+fencembonceonce+Release.litmus │ ├── C-RWC+poacquireacquire+poonceacquire+Once.litmus │ ├── C-RWC+poacquireacquire+poonceacquire+Release.litmus │ ├── C-RWC+poacquireacquire+poonceonce+Once.litmus │ ├── C-RWC+poacquireacquire+poonceonce+Release.litmus │ ├── C-RWC+poacquireacquire+poreleaseacquire+Once.litmus │ ├── C-RWC+poacquireacquire+poreleaseacquire+Release.litmus │ ├── C-RWC+poacquireacquire+poreleaseonce+Once.litmus │ ├── C-RWC+poacquireacquire+poreleaseonce+Release.litmus │ ├── C-RWC+poacquireonce+fencembonceonce+Once.litmus │ ├── C-RWC+poacquireonce+fencembonceonce+Release.litmus │ ├── C-RWC+poacquireonce+poonceacquire+Once.litmus │ ├── C-RWC+poacquireonce+poonceacquire+Release.litmus │ ├── C-RWC+poacquireonce+poonceonce+Once.litmus │ ├── C-RWC+poacquireonce+poonceonce+Release.litmus │ ├── C-RWC+poacquireonce+poreleaseacquire+Once.litmus │ ├── C-RWC+poacquireonce+poreleaseacquire+Release.litmus │ ├── C-RWC+poacquireonce+poreleaseonce+Once.litmus │ ├── C-RWC+poacquireonce+poreleaseonce+Release.litmus │ ├── C-RWC+poonceacquire+fencembonceonce+Once.litmus │ ├── C-RWC+poonceacquire+fencembonceonce+Release.litmus │ ├── C-RWC+poonceacquire+poonceonce+Once.litmus │ ├── C-RWC+poonceacquire+poonceonce+Release.litmus │ ├── C-RWC+poonceacquire+poreleaseacquire+Once.litmus │ ├── C-RWC+poonceacquire+poreleaseacquire+Release.litmus │ ├── C-RWC+poonceacquire+poreleaseonce+Once.litmus │ ├── C-RWC+poonceacquire+poreleaseonce+Release.litmus │ ├── C-RWC+poonceacquires+Once.litmus │ ├── C-RWC+poonceacquires+Release.litmus │ ├── C-RWC+poonceonce+fencembonceonce+Release.litmus │ ├── C-RWC+poonceonce+poonceacquire+Once.litmus │ ├── C-RWC+poonceonce+poonceacquire+Release.litmus │ ├── C-RWC+poonceonce+poreleaseacquire+Once.litmus │ ├── C-RWC+poonceonce+poreleaseacquire+Release.litmus │ ├── C-RWC+poonceonce+poreleaseonce+Once.litmus │ ├── C-RWC+poonceonce+poreleaseonce+Release.litmus │ ├── C-RWC+poonceonces+Release.litmus │ ├── C-S+fencembonceonce+poacquireonce.litmus │ ├── C-S+fencembonceonce+poacquirerelease.litmus │ ├── C-S+fencembonceonce+pooncerelease.litmus │ ├── C-S+poonceonce+poacquireonce.litmus │ ├── C-S+poonceonce+poacquirerelease.litmus │ ├── C-S+poonceonce+pooncerelease.litmus │ ├── C-S+pooncerelease+ctrlonceonce.litmus │ ├── C-S+pooncerelease+fencembonceonce.litmus │ ├── C-S+pooncerelease+poacquireonce.litmus │ ├── C-S+pooncerelease+poacquirerelease.litmus │ ├── C-S+pooncerelease+poonceonce.litmus │ ├── C-S+pooncereleases.litmus │ ├── C-S+poreleaseonce+ctrlonceonce.litmus │ ├── C-S+poreleaseonce+fencembonceonce.litmus │ ├── C-S+poreleaseonce+poacquireonce.litmus │ ├── C-S+poreleaseonce+poacquirerelease.litmus │ ├── C-S+poreleaseonce+poonceonce.litmus │ ├── C-S+poreleaseonce+pooncerelease.litmus │ ├── C-S+poreleaserelease+ctrlonceonce.litmus │ ├── C-S+poreleaserelease+fencembonceonce.litmus │ ├── C-S+poreleaserelease+poacquireonce.litmus │ ├── C-S+poreleaserelease+poacquirerelease.litmus │ ├── C-S+poreleaserelease+poonceonce.litmus │ ├── C-S+poreleaserelease+pooncerelease.litmus │ ├── C-SB+fencembonceonce+poonceacquire.litmus │ ├── C-SB+fencembonceonce+poreleaseacquire.litmus │ ├── C-SB+fencembonceonce+poreleaseonce.litmus │ ├── C-SB+poonceacquire+poonceonce.litmus │ ├── C-SB+poonceacquire+poreleaseacquire.litmus │ ├── C-SB+poonceacquire+poreleaseonce.litmus │ ├── C-SB+poonceacquires.litmus │ ├── C-SB+poonceonce+poreleaseacquire.litmus │ ├── C-SB+poonceonce+poreleaseonce.litmus │ ├── C-SB+poreleaseacquire+poreleaseonce.litmus │ ├── C-SB+poreleaseacquires.litmus │ ├── C-SB+poreleaseonces.litmus │ ├── C-W+RWC+fencembonceonce+fencembonceonce+poonceacquire.litmus │ ├── C-W+RWC+fencembonceonce+fencembonceonce+poreleaseacquire.litmus │ ├── C-W+RWC+fencembonceonce+fencembonceonce+poreleaseonce.litmus │ ├── C-W+RWC+fencembonceonce+poacquireacquire+fencembonceonce.litmus │ ├── C-W+RWC+fencembonceonce+poacquireacquire+poonceacquire.litmus │ ├── C-W+RWC+fencembonceonce+poacquireacquire+poonceonce.litmus │ ├── C-W+RWC+fencembonceonce+poacquireacquire+poreleaseacquire.litmus │ ├── C-W+RWC+fencembonceonce+poacquireacquire+poreleaseonce.litmus │ ├── C-W+RWC+fencembonceonce+poacquireonce+fencembonceonce.litmus │ ├── C-W+RWC+fencembonceonce+poacquireonce+poonceacquire.litmus │ ├── C-W+RWC+fencembonceonce+poacquireonce+poonceonce.litmus │ ├── C-W+RWC+fencembonceonce+poacquireonce+poreleaseacquire.litmus │ ├── C-W+RWC+fencembonceonce+poacquireonce+poreleaseonce.litmus │ ├── C-W+RWC+fencembonceonce+poonceacquire+fencembonceonce.litmus │ ├── C-W+RWC+fencembonceonce+poonceacquire+poonceacquire.litmus │ ├── C-W+RWC+fencembonceonce+poonceacquire+poonceonce.litmus │ ├── C-W+RWC+fencembonceonce+poonceacquire+poreleaseacquire.litmus │ ├── C-W+RWC+fencembonceonce+poonceacquire+poreleaseonce.litmus │ ├── C-W+RWC+fencembonceonce+poonceonce+poonceacquire.litmus │ ├── C-W+RWC+fencembonceonce+poonceonce+poreleaseacquire.litmus │ ├── C-W+RWC+fencembonceonce+poonceonce+poreleaseonce.litmus │ ├── C-W+RWC+poonceonce+fencembonceonce+poonceacquire.litmus │ ├── C-W+RWC+poonceonce+fencembonceonce+poreleaseacquire.litmus │ ├── C-W+RWC+poonceonce+fencembonceonce+poreleaseonce.litmus │ ├── C-W+RWC+poonceonce+poacquireacquire+fencembonceonce.litmus │ ├── C-W+RWC+poonceonce+poacquireacquire+poonceacquire.litmus │ ├── C-W+RWC+poonceonce+poacquireacquire+poonceonce.litmus │ ├── C-W+RWC+poonceonce+poacquireacquire+poreleaseacquire.litmus │ ├── C-W+RWC+poonceonce+poacquireacquire+poreleaseonce.litmus │ ├── C-W+RWC+poonceonce+poacquireonce+fencembonceonce.litmus │ ├── C-W+RWC+poonceonce+poacquireonce+poonceacquire.litmus │ ├── C-W+RWC+poonceonce+poacquireonce+poonceonce.litmus │ ├── C-W+RWC+poonceonce+poacquireonce+poreleaseacquire.litmus │ ├── C-W+RWC+poonceonce+poacquireonce+poreleaseonce.litmus │ ├── C-W+RWC+poonceonce+poonceacquire+fencembonceonce.litmus │ ├── C-W+RWC+poonceonce+poonceacquire+poonceacquire.litmus │ ├── C-W+RWC+poonceonce+poonceacquire+poonceonce.litmus │ ├── C-W+RWC+poonceonce+poonceacquire+poreleaseacquire.litmus │ ├── C-W+RWC+poonceonce+poonceacquire+poreleaseonce.litmus │ ├── C-W+RWC+poonceonce+poonceonce+poonceacquire.litmus │ ├── C-W+RWC+poonceonce+poonceonce+poreleaseacquire.litmus │ ├── C-W+RWC+poonceonce+poonceonce+poreleaseonce.litmus │ ├── C-W+RWC+pooncerelease+fencembonceonce+fencembonceonce.litmus │ ├── C-W+RWC+pooncerelease+fencembonceonce+poonceacquire.litmus │ ├── C-W+RWC+pooncerelease+fencembonceonce+poonceonce.litmus │ ├── C-W+RWC+pooncerelease+fencembonceonce+poreleaseacquire.litmus │ ├── C-W+RWC+pooncerelease+fencembonceonce+poreleaseonce.litmus │ ├── C-W+RWC+pooncerelease+poacquireacquire+fencembonceonce.litmus │ ├── C-W+RWC+pooncerelease+poacquireacquire+poonceacquire.litmus │ ├── C-W+RWC+pooncerelease+poacquireacquire+poonceonce.litmus │ ├── C-W+RWC+pooncerelease+poacquireacquire+poreleaseacquire.litmus │ ├── C-W+RWC+pooncerelease+poacquireacquire+poreleaseonce.litmus │ ├── C-W+RWC+pooncerelease+poacquireonce+fencembonceonce.litmus │ ├── C-W+RWC+pooncerelease+poacquireonce+poonceacquire.litmus │ ├── C-W+RWC+pooncerelease+poacquireonce+poonceonce.litmus │ ├── C-W+RWC+pooncerelease+poacquireonce+poreleaseacquire.litmus │ ├── C-W+RWC+pooncerelease+poacquireonce+poreleaseonce.litmus │ ├── C-W+RWC+pooncerelease+poonceacquire+fencembonceonce.litmus │ ├── C-W+RWC+pooncerelease+poonceacquire+poonceacquire.litmus │ ├── C-W+RWC+pooncerelease+poonceacquire+poonceonce.litmus │ ├── C-W+RWC+pooncerelease+poonceacquire+poreleaseacquire.litmus │ ├── C-W+RWC+pooncerelease+poonceacquire+poreleaseonce.litmus │ ├── C-W+RWC+pooncerelease+poonceonce+fencembonceonce.litmus │ ├── C-W+RWC+pooncerelease+poonceonce+poonceacquire.litmus │ ├── C-W+RWC+pooncerelease+poonceonce+poonceonce.litmus │ ├── C-W+RWC+pooncerelease+poonceonce+poreleaseacquire.litmus │ ├── C-W+RWC+pooncerelease+poonceonce+poreleaseonce.litmus │ ├── C-W+RWC+poreleaseonce+fencembonceonce+fencembonceonce.litmus │ ├── C-W+RWC+poreleaseonce+fencembonceonce+poonceacquire.litmus │ ├── C-W+RWC+poreleaseonce+fencembonceonce+poonceonce.litmus │ ├── C-W+RWC+poreleaseonce+fencembonceonce+poreleaseacquire.litmus │ ├── C-W+RWC+poreleaseonce+fencembonceonce+poreleaseonce.litmus │ ├── C-W+RWC+poreleaseonce+poacquireacquire+fencembonceonce.litmus │ ├── C-W+RWC+poreleaseonce+poacquireacquire+poonceacquire.litmus │ ├── C-W+RWC+poreleaseonce+poacquireacquire+poonceonce.litmus │ ├── C-W+RWC+poreleaseonce+poacquireacquire+poreleaseacquire.litmus │ ├── C-W+RWC+poreleaseonce+poacquireacquire+poreleaseonce.litmus │ ├── C-W+RWC+poreleaseonce+poacquireonce+fencembonceonce.litmus │ ├── C-W+RWC+poreleaseonce+poacquireonce+poonceacquire.litmus │ ├── C-W+RWC+poreleaseonce+poacquireonce+poonceonce.litmus │ ├── C-W+RWC+poreleaseonce+poacquireonce+poreleaseacquire.litmus │ ├── C-W+RWC+poreleaseonce+poacquireonce+poreleaseonce.litmus │ ├── C-W+RWC+poreleaseonce+poonceacquire+fencembonceonce.litmus │ ├── C-W+RWC+poreleaseonce+poonceacquire+poonceacquire.litmus │ ├── C-W+RWC+poreleaseonce+poonceacquire+poonceonce.litmus │ ├── C-W+RWC+poreleaseonce+poonceacquire+poreleaseacquire.litmus │ ├── C-W+RWC+poreleaseonce+poonceacquire+poreleaseonce.litmus │ ├── C-W+RWC+poreleaseonce+poonceonce+fencembonceonce.litmus │ ├── C-W+RWC+poreleaseonce+poonceonce+poonceacquire.litmus │ ├── C-W+RWC+poreleaseonce+poonceonce+poonceonce.litmus │ ├── C-W+RWC+poreleaseonce+poonceonce+poreleaseacquire.litmus │ ├── C-W+RWC+poreleaseonce+poonceonce+poreleaseonce.litmus │ ├── C-W+RWC+poreleaserelease+fencembonceonce+fencembonceonce.litmus │ ├── C-W+RWC+poreleaserelease+fencembonceonce+poonceacquire.litmus │ ├── C-W+RWC+poreleaserelease+fencembonceonce+poonceonce.litmus │ ├── C-W+RWC+poreleaserelease+fencembonceonce+poreleaseacquire.litmus │ ├── C-W+RWC+poreleaserelease+fencembonceonce+poreleaseonce.litmus │ ├── C-W+RWC+poreleaserelease+poacquireacquire+fencembonceonce.litmus │ ├── C-W+RWC+poreleaserelease+poacquireacquire+poonceacquire.litmus │ ├── C-W+RWC+poreleaserelease+poacquireacquire+poonceonce.litmus │ ├── C-W+RWC+poreleaserelease+poacquireacquire+poreleaseacquire.litmus │ ├── C-W+RWC+poreleaserelease+poacquireacquire+poreleaseonce.litmus │ ├── C-W+RWC+poreleaserelease+poacquireonce+fencembonceonce.litmus │ ├── C-W+RWC+poreleaserelease+poacquireonce+poonceacquire.litmus │ ├── C-W+RWC+poreleaserelease+poacquireonce+poonceonce.litmus │ ├── C-W+RWC+poreleaserelease+poacquireonce+poreleaseacquire.litmus │ ├── C-W+RWC+poreleaserelease+poacquireonce+poreleaseonce.litmus │ ├── C-W+RWC+poreleaserelease+poonceacquire+fencembonceonce.litmus │ ├── C-W+RWC+poreleaserelease+poonceacquire+poonceacquire.litmus │ ├── C-W+RWC+poreleaserelease+poonceacquire+poonceonce.litmus │ ├── C-W+RWC+poreleaserelease+poonceacquire+poreleaseacquire.litmus │ ├── C-W+RWC+poreleaserelease+poonceacquire+poreleaseonce.litmus │ ├── C-W+RWC+poreleaserelease+poonceonce+fencembonceonce.litmus │ ├── C-W+RWC+poreleaserelease+poonceonce+poonceacquire.litmus │ ├── C-W+RWC+poreleaserelease+poonceonce+poonceonce.litmus │ ├── C-W+RWC+poreleaserelease+poonceonce+poreleaseacquire.litmus │ ├── C-W+RWC+poreleaserelease+poonceonce+poreleaseonce.litmus │ ├── C-WRC+ctrlonceonce+fencembonceonce+Release.litmus │ ├── C-WRC+ctrlonceonce+poacquireacquire+Once.litmus │ ├── C-WRC+ctrlonceonce+poacquireacquire+Release.litmus │ ├── C-WRC+ctrlonceonce+poacquireonce+Once.litmus │ ├── C-WRC+ctrlonceonce+poacquireonce+Release.litmus │ ├── C-WRC+ctrlonceonce+poonceacquire+Once.litmus │ ├── C-WRC+ctrlonceonce+poonceacquire+Release.litmus │ ├── C-WRC+ctrlonceonce+poonceonce+Release.litmus │ ├── C-WRC+fencembonceonce+poacquireacquire+Once.litmus │ ├── C-WRC+fencembonceonce+poacquireacquire+Release.litmus │ ├── C-WRC+fencembonceonce+poacquireonce+Once.litmus │ ├── C-WRC+fencembonceonce+poacquireonce+Release.litmus │ ├── C-WRC+fencembonceonce+poonceacquire+Once.litmus │ ├── C-WRC+fencembonceonce+poonceacquire+Release.litmus │ ├── C-WRC+fencembonceonce+poonceonce+Release.litmus │ ├── C-WRC+fencembonceonces+Release.litmus │ ├── C-WRC+poacquireonce+fencembonceonce+Once.litmus │ ├── C-WRC+poacquireonce+fencembonceonce+Release.litmus │ ├── C-WRC+poacquireonce+poacquireacquire+Once.litmus │ ├── C-WRC+poacquireonce+poacquireacquire+Release.litmus │ ├── C-WRC+poacquireonce+poonceacquire+Once.litmus │ ├── C-WRC+poacquireonce+poonceacquire+Release.litmus │ ├── C-WRC+poacquireonce+poonceonce+Once.litmus │ ├── C-WRC+poacquireonce+poonceonce+Release.litmus │ ├── C-WRC+poacquireonces+Once.litmus │ ├── C-WRC+poacquireonces+Release.litmus │ ├── C-WRC+poacquirerelease+fencembonceonce+Once.litmus │ ├── C-WRC+poacquirerelease+fencembonceonce+Release.litmus │ ├── C-WRC+poacquirerelease+poacquireacquire+Once.litmus │ ├── C-WRC+poacquirerelease+poacquireacquire+Release.litmus │ ├── C-WRC+poacquirerelease+poacquireonce+Once.litmus │ ├── C-WRC+poacquirerelease+poacquireonce+Release.litmus │ ├── C-WRC+poacquirerelease+poonceacquire+Once.litmus │ ├── C-WRC+poacquirerelease+poonceacquire+Release.litmus │ ├── C-WRC+poacquirerelease+poonceonce+Once.litmus │ ├── C-WRC+poacquirerelease+poonceonce+Release.litmus │ ├── C-WRC+poonceonce+fencembonceonce+Release.litmus │ ├── C-WRC+poonceonce+poacquireacquire+Once.litmus │ ├── C-WRC+poonceonce+poacquireacquire+Release.litmus │ ├── C-WRC+poonceonce+poacquireonce+Once.litmus │ ├── C-WRC+poonceonce+poacquireonce+Release.litmus │ ├── C-WRC+poonceonce+poonceacquire+Once.litmus │ ├── C-WRC+poonceonce+poonceacquire+Release.litmus │ ├── C-WRC+poonceonces+Release.litmus │ ├── C-WRC+pooncerelease+fencembonceonce+Once.litmus │ ├── C-WRC+pooncerelease+fencembonceonce+Release.litmus │ ├── C-WRC+pooncerelease+poacquireacquire+Once.litmus │ ├── C-WRC+pooncerelease+poacquireacquire+Release.litmus │ ├── C-WRC+pooncerelease+poacquireonce+Once.litmus │ ├── C-WRC+pooncerelease+poacquireonce+Release.litmus │ ├── C-WRC+pooncerelease+poonceacquire+Once.litmus │ ├── C-WRC+pooncerelease+poonceacquire+Release.litmus │ ├── C-WRC+pooncerelease+poonceonce+Once.litmus │ ├── C-WRC+pooncerelease+poonceonce+Release.litmus │ ├── C-WRR+2W+fencembonceonce+poonceonce+Release.litmus │ ├── C-WRR+2W+fencembonceonce+pooncerelease+Once.litmus │ ├── C-WRR+2W+fencembonceonce+pooncerelease+Release.litmus │ ├── C-WRR+2W+fencembonceonce+poreleaseonce+Once.litmus │ ├── C-WRR+2W+fencembonceonce+poreleaseonce+Release.litmus │ ├── C-WRR+2W+fencembonceonce+poreleaserelease+Once.litmus │ ├── C-WRR+2W+fencembonceonce+poreleaserelease+Release.litmus │ ├── C-WRR+2W+fencembonceonces+Release.litmus │ ├── C-WRR+2W+poacquireacquire+fencembonceonce+Once.litmus │ ├── C-WRR+2W+poacquireacquire+fencembonceonce+Release.litmus │ ├── C-WRR+2W+poacquireacquire+poonceonce+Once.litmus │ ├── C-WRR+2W+poacquireacquire+poonceonce+Release.litmus │ ├── C-WRR+2W+poacquireacquire+pooncerelease+Once.litmus │ ├── C-WRR+2W+poacquireacquire+pooncerelease+Release.litmus │ ├── C-WRR+2W+poacquireacquire+poreleaseonce+Once.litmus │ ├── C-WRR+2W+poacquireacquire+poreleaseonce+Release.litmus │ ├── C-WRR+2W+poacquireacquire+poreleaserelease+Once.litmus │ ├── C-WRR+2W+poacquireacquire+poreleaserelease+Release.litmus │ ├── C-WRR+2W+poacquireonce+fencembonceonce+Once.litmus │ ├── C-WRR+2W+poacquireonce+fencembonceonce+Release.litmus │ ├── C-WRR+2W+poacquireonce+poonceonce+Once.litmus │ ├── C-WRR+2W+poacquireonce+poonceonce+Release.litmus │ ├── C-WRR+2W+poacquireonce+pooncerelease+Once.litmus │ ├── C-WRR+2W+poacquireonce+pooncerelease+Release.litmus │ ├── C-WRR+2W+poacquireonce+poreleaseonce+Once.litmus │ ├── C-WRR+2W+poacquireonce+poreleaseonce+Release.litmus │ ├── C-WRR+2W+poacquireonce+poreleaserelease+Once.litmus │ ├── C-WRR+2W+poacquireonce+poreleaserelease+Release.litmus │ ├── C-WRR+2W+poonceacquire+fencembonceonce+Once.litmus │ ├── C-WRR+2W+poonceacquire+fencembonceonce+Release.litmus │ ├── C-WRR+2W+poonceacquire+poonceonce+Once.litmus │ ├── C-WRR+2W+poonceacquire+poonceonce+Release.litmus │ ├── C-WRR+2W+poonceacquire+pooncerelease+Once.litmus │ ├── C-WRR+2W+poonceacquire+pooncerelease+Release.litmus │ ├── C-WRR+2W+poonceacquire+poreleaseonce+Once.litmus │ ├── C-WRR+2W+poonceacquire+poreleaseonce+Release.litmus │ ├── C-WRR+2W+poonceacquire+poreleaserelease+Once.litmus │ ├── C-WRR+2W+poonceacquire+poreleaserelease+Release.litmus │ ├── C-WRR+2W+poonceonce+fencembonceonce+Release.litmus │ ├── C-WRR+2W+poonceonce+pooncerelease+Once.litmus │ ├── C-WRR+2W+poonceonce+pooncerelease+Release.litmus │ ├── C-WRR+2W+poonceonce+poreleaseonce+Once.litmus │ ├── C-WRR+2W+poonceonce+poreleaseonce+Release.litmus │ ├── C-WRR+2W+poonceonce+poreleaserelease+Once.litmus │ ├── C-WRR+2W+poonceonce+poreleaserelease+Release.litmus │ ├── C-WRR+2W+poonceonces+Release.litmus │ ├── C-WRW+2W+ctrlonceonce+fencembonceonce+Release.litmus │ ├── C-WRW+2W+ctrlonceonce+poonceonce+Release.litmus │ ├── C-WRW+2W+ctrlonceonce+pooncerelease+Once.litmus │ ├── C-WRW+2W+ctrlonceonce+pooncerelease+Release.litmus │ ├── C-WRW+2W+ctrlonceonce+poreleaseonce+Once.litmus │ ├── C-WRW+2W+ctrlonceonce+poreleaseonce+Release.litmus │ ├── C-WRW+2W+ctrlonceonce+poreleaserelease+Once.litmus │ ├── C-WRW+2W+ctrlonceonce+poreleaserelease+Release.litmus │ ├── C-WRW+2W+fencembonceonce+poonceonce+Release.litmus │ ├── C-WRW+2W+fencembonceonce+pooncerelease+Once.litmus │ ├── C-WRW+2W+fencembonceonce+pooncerelease+Release.litmus │ ├── C-WRW+2W+fencembonceonce+poreleaseonce+Once.litmus │ ├── C-WRW+2W+fencembonceonce+poreleaseonce+Release.litmus │ ├── C-WRW+2W+fencembonceonce+poreleaserelease+Once.litmus │ ├── C-WRW+2W+fencembonceonce+poreleaserelease+Release.litmus │ ├── C-WRW+2W+fencembonceonces+Release.litmus │ ├── C-WRW+2W+poacquireonce+fencembonceonce+Once.litmus │ ├── C-WRW+2W+poacquireonce+fencembonceonce+Release.litmus │ ├── C-WRW+2W+poacquireonce+poonceonce+Once.litmus │ ├── C-WRW+2W+poacquireonce+poonceonce+Release.litmus │ ├── C-WRW+2W+poacquireonce+pooncerelease+Once.litmus │ ├── C-WRW+2W+poacquireonce+pooncerelease+Release.litmus │ ├── C-WRW+2W+poacquireonce+poreleaseonce+Once.litmus │ ├── C-WRW+2W+poacquireonce+poreleaseonce+Release.litmus │ ├── C-WRW+2W+poacquireonce+poreleaserelease+Once.litmus │ ├── C-WRW+2W+poacquireonce+poreleaserelease+Release.litmus │ ├── C-WRW+2W+poacquirerelease+fencembonceonce+Once.litmus │ ├── C-WRW+2W+poacquirerelease+fencembonceonce+Release.litmus │ ├── C-WRW+2W+poacquirerelease+poonceonce+Once.litmus │ ├── C-WRW+2W+poacquirerelease+poonceonce+Release.litmus │ ├── C-WRW+2W+poacquirerelease+pooncerelease+Once.litmus │ ├── C-WRW+2W+poacquirerelease+pooncerelease+Release.litmus │ ├── C-WRW+2W+poacquirerelease+poreleaseonce+Once.litmus │ ├── C-WRW+2W+poacquirerelease+poreleaseonce+Release.litmus │ ├── C-WRW+2W+poacquirerelease+poreleaserelease+Once.litmus │ ├── C-WRW+2W+poacquirerelease+poreleaserelease+Release.litmus │ ├── C-WRW+2W+poonceonce+fencembonceonce+Release.litmus │ ├── C-WRW+2W+poonceonce+pooncerelease+Once.litmus │ ├── C-WRW+2W+poonceonce+pooncerelease+Release.litmus │ ├── C-WRW+2W+poonceonce+poreleaseonce+Once.litmus │ ├── C-WRW+2W+poonceonce+poreleaseonce+Release.litmus │ ├── C-WRW+2W+poonceonce+poreleaserelease+Once.litmus │ ├── C-WRW+2W+poonceonce+poreleaserelease+Release.litmus │ ├── C-WRW+2W+poonceonces+Release.litmus │ ├── C-WRW+2W+pooncerelease+fencembonceonce+Once.litmus │ ├── C-WRW+2W+pooncerelease+fencembonceonce+Release.litmus │ ├── C-WRW+2W+pooncerelease+poonceonce+Once.litmus │ ├── C-WRW+2W+pooncerelease+poonceonce+Release.litmus │ ├── C-WRW+2W+pooncerelease+poreleaseonce+Once.litmus │ ├── C-WRW+2W+pooncerelease+poreleaseonce+Release.litmus │ ├── C-WRW+2W+pooncerelease+poreleaserelease+Once.litmus │ ├── C-WRW+2W+pooncerelease+poreleaserelease+Release.litmus │ ├── C-WRW+2W+pooncereleases+Once.litmus │ ├── C-WRW+2W+pooncereleases+Release.litmus │ ├── C-WRW+WR+ctrlonceonce+fencembonceonce+Release.litmus │ ├── C-WRW+WR+ctrlonceonce+poonceacquire+Once.litmus │ ├── C-WRW+WR+ctrlonceonce+poonceacquire+Release.litmus │ ├── C-WRW+WR+ctrlonceonce+poonceonce+Release.litmus │ ├── C-WRW+WR+ctrlonceonce+poreleaseacquire+Once.litmus │ ├── C-WRW+WR+ctrlonceonce+poreleaseacquire+Release.litmus │ ├── C-WRW+WR+ctrlonceonce+poreleaseonce+Once.litmus │ ├── C-WRW+WR+ctrlonceonce+poreleaseonce+Release.litmus │ ├── C-WRW+WR+fencembonceonce+poonceacquire+Once.litmus │ ├── C-WRW+WR+fencembonceonce+poonceacquire+Release.litmus │ ├── C-WRW+WR+fencembonceonce+poonceonce+Release.litmus │ ├── C-WRW+WR+fencembonceonce+poreleaseacquire+Once.litmus │ ├── C-WRW+WR+fencembonceonce+poreleaseacquire+Release.litmus │ ├── C-WRW+WR+fencembonceonce+poreleaseonce+Once.litmus │ ├── C-WRW+WR+fencembonceonce+poreleaseonce+Release.litmus │ ├── C-WRW+WR+fencembonceonces+Release.litmus │ ├── C-WRW+WR+poacquireonce+fencembonceonce+Once.litmus │ ├── C-WRW+WR+poacquireonce+fencembonceonce+Release.litmus │ ├── C-WRW+WR+poacquireonce+poonceacquire+Once.litmus │ ├── C-WRW+WR+poacquireonce+poonceacquire+Release.litmus │ ├── C-WRW+WR+poacquireonce+poonceonce+Once.litmus │ ├── C-WRW+WR+poacquireonce+poonceonce+Release.litmus │ ├── C-WRW+WR+poacquireonce+poreleaseacquire+Once.litmus │ ├── C-WRW+WR+poacquireonce+poreleaseacquire+Release.litmus │ ├── C-WRW+WR+poacquireonce+poreleaseonce+Once.litmus │ ├── C-WRW+WR+poacquireonce+poreleaseonce+Release.litmus │ ├── C-WRW+WR+poacquirerelease+fencembonceonce+Once.litmus │ ├── C-WRW+WR+poacquirerelease+fencembonceonce+Release.litmus │ ├── C-WRW+WR+poacquirerelease+poonceacquire+Once.litmus │ ├── C-WRW+WR+poacquirerelease+poonceacquire+Release.litmus │ ├── C-WRW+WR+poacquirerelease+poonceonce+Once.litmus │ ├── C-WRW+WR+poacquirerelease+poonceonce+Release.litmus │ ├── C-WRW+WR+poacquirerelease+poreleaseacquire+Once.litmus │ ├── C-WRW+WR+poacquirerelease+poreleaseacquire+Release.litmus │ ├── C-WRW+WR+poacquirerelease+poreleaseonce+Once.litmus │ ├── C-WRW+WR+poacquirerelease+poreleaseonce+Release.litmus │ ├── C-WRW+WR+poonceonce+fencembonceonce+Release.litmus │ ├── C-WRW+WR+poonceonce+poonceacquire+Once.litmus │ ├── C-WRW+WR+poonceonce+poonceacquire+Release.litmus │ ├── C-WRW+WR+poonceonce+poreleaseacquire+Once.litmus │ ├── C-WRW+WR+poonceonce+poreleaseacquire+Release.litmus │ ├── C-WRW+WR+poonceonce+poreleaseonce+Once.litmus │ ├── C-WRW+WR+poonceonce+poreleaseonce+Release.litmus │ ├── C-WRW+WR+poonceonces+Release.litmus │ ├── C-WRW+WR+pooncerelease+fencembonceonce+Once.litmus │ ├── C-WRW+WR+pooncerelease+fencembonceonce+Release.litmus │ ├── C-WRW+WR+pooncerelease+poonceacquire+Once.litmus │ ├── C-WRW+WR+pooncerelease+poonceacquire+Release.litmus │ ├── C-WRW+WR+pooncerelease+poonceonce+Once.litmus │ ├── C-WRW+WR+pooncerelease+poonceonce+Release.litmus │ ├── C-WRW+WR+pooncerelease+poreleaseacquire+Once.litmus │ ├── C-WRW+WR+pooncerelease+poreleaseacquire+Release.litmus │ ├── C-WRW+WR+pooncerelease+poreleaseonce+Once.litmus │ ├── C-WRW+WR+pooncerelease+poreleaseonce+Release.litmus │ ├── C-WWC+ctrlonceonce+fencembonceonce+Release.litmus │ ├── C-WWC+ctrlonceonce+poacquireonce+Once.litmus │ ├── C-WWC+ctrlonceonce+poacquireonce+Release.litmus │ ├── C-WWC+ctrlonceonce+poacquirerelease+Once.litmus │ ├── C-WWC+ctrlonceonce+poacquirerelease+Release.litmus │ ├── C-WWC+ctrlonceonce+poonceonce+Release.litmus │ ├── C-WWC+ctrlonceonce+pooncerelease+Once.litmus │ ├── C-WWC+ctrlonceonce+pooncerelease+Release.litmus │ ├── C-WWC+ctrlonceonces+Release.litmus │ ├── C-WWC+fencembonceonce+ctrlonceonce+Release.litmus │ ├── C-WWC+fencembonceonce+poacquireonce+Once.litmus │ ├── C-WWC+fencembonceonce+poacquireonce+Release.litmus │ ├── C-WWC+fencembonceonce+poacquirerelease+Once.litmus │ ├── C-WWC+fencembonceonce+poacquirerelease+Release.litmus │ ├── C-WWC+fencembonceonce+poonceonce+Release.litmus │ ├── C-WWC+fencembonceonce+pooncerelease+Once.litmus │ ├── C-WWC+fencembonceonce+pooncerelease+Release.litmus │ ├── C-WWC+fencembonceonces+Release.litmus │ ├── C-WWC+poacquireonce+ctrlonceonce+Once.litmus │ ├── C-WWC+poacquireonce+ctrlonceonce+Release.litmus │ ├── C-WWC+poacquireonce+fencembonceonce+Once.litmus │ ├── C-WWC+poacquireonce+fencembonceonce+Release.litmus │ ├── C-WWC+poacquireonce+poacquirerelease+Once.litmus │ ├── C-WWC+poacquireonce+poacquirerelease+Release.litmus │ ├── C-WWC+poacquireonce+poonceonce+Once.litmus │ ├── C-WWC+poacquireonce+poonceonce+Release.litmus │ ├── C-WWC+poacquireonce+pooncerelease+Once.litmus │ ├── C-WWC+poacquireonce+pooncerelease+Release.litmus │ ├── C-WWC+poacquireonces+Once.litmus │ ├── C-WWC+poacquireonces+Release.litmus │ ├── C-WWC+poacquirerelease+ctrlonceonce+Once.litmus │ ├── C-WWC+poacquirerelease+ctrlonceonce+Release.litmus │ ├── C-WWC+poacquirerelease+fencembonceonce+Once.litmus │ ├── C-WWC+poacquirerelease+fencembonceonce+Release.litmus │ ├── C-WWC+poacquirerelease+poacquireonce+Once.litmus │ ├── C-WWC+poacquirerelease+poacquireonce+Release.litmus │ ├── C-WWC+poacquirerelease+poonceonce+Once.litmus │ ├── C-WWC+poacquirerelease+poonceonce+Release.litmus │ ├── C-WWC+poacquirerelease+pooncerelease+Once.litmus │ ├── C-WWC+poacquirerelease+pooncerelease+Release.litmus │ ├── C-WWC+poacquirereleases+Once.litmus │ ├── C-WWC+poacquirereleases+Release.litmus │ ├── C-WWC+poonceonce+ctrlonceonce+Release.litmus │ ├── C-WWC+poonceonce+fencembonceonce+Release.litmus │ ├── C-WWC+poonceonce+poacquireonce+Once.litmus │ ├── C-WWC+poonceonce+poacquireonce+Release.litmus │ ├── C-WWC+poonceonce+poacquirerelease+Once.litmus │ ├── C-WWC+poonceonce+poacquirerelease+Release.litmus │ ├── C-WWC+poonceonce+pooncerelease+Once.litmus │ ├── C-WWC+poonceonce+pooncerelease+Release.litmus │ ├── C-WWC+poonceonces+Release.litmus │ ├── C-WWC+pooncerelease+ctrlonceonce+Once.litmus │ ├── C-WWC+pooncerelease+ctrlonceonce+Release.litmus │ ├── C-WWC+pooncerelease+fencembonceonce+Once.litmus │ ├── C-WWC+pooncerelease+fencembonceonce+Release.litmus │ ├── C-WWC+pooncerelease+poacquireonce+Once.litmus │ ├── C-WWC+pooncerelease+poacquireonce+Release.litmus │ ├── C-WWC+pooncerelease+poacquirerelease+Once.litmus │ ├── C-WWC+pooncerelease+poacquirerelease+Release.litmus │ ├── C-WWC+pooncerelease+poonceonce+Once.litmus │ ├── C-WWC+pooncerelease+poonceonce+Release.litmus │ ├── C-WWC+pooncereleases+Once.litmus │ ├── C-WWC+pooncereleases+Release.litmus │ ├── C-Z6.0+fencembonceonce+ctrlonceonce+poonceacquire.litmus │ ├── C-Z6.0+fencembonceonce+ctrlonceonce+poreleaseacquire.litmus │ ├── C-Z6.0+fencembonceonce+ctrlonceonce+poreleaseonce.litmus │ ├── C-Z6.0+fencembonceonce+fencembonceonce+poonceacquire.litmus │ ├── C-Z6.0+fencembonceonce+fencembonceonce+poreleaseacquire.litmus │ ├── C-Z6.0+fencembonceonce+fencembonceonce+poreleaseonce.litmus │ ├── C-Z6.0+fencembonceonce+poacquireonce+fencembonceonce.litmus │ ├── C-Z6.0+fencembonceonce+poacquireonce+poonceacquire.litmus │ ├── C-Z6.0+fencembonceonce+poacquireonce+poonceonce.litmus │ ├── C-Z6.0+fencembonceonce+poacquireonce+poreleaseacquire.litmus │ ├── C-Z6.0+fencembonceonce+poacquireonce+poreleaseonce.litmus │ ├── C-Z6.0+fencembonceonce+poacquirerelease+fencembonceonce.litmus │ ├── C-Z6.0+fencembonceonce+poacquirerelease+poonceacquire.litmus │ ├── C-Z6.0+fencembonceonce+poacquirerelease+poonceonce.litmus │ ├── C-Z6.0+fencembonceonce+poacquirerelease+poreleaseacquire.litmus │ ├── C-Z6.0+fencembonceonce+poacquirerelease+poreleaseonce.litmus │ ├── C-Z6.0+fencembonceonce+poonceonce+poonceacquire.litmus │ ├── C-Z6.0+fencembonceonce+poonceonce+poreleaseacquire.litmus │ ├── C-Z6.0+fencembonceonce+poonceonce+poreleaseonce.litmus │ ├── C-Z6.0+fencembonceonce+pooncerelease+fencembonceonce.litmus │ ├── C-Z6.0+fencembonceonce+pooncerelease+poonceacquire.litmus │ ├── C-Z6.0+fencembonceonce+pooncerelease+poonceonce.litmus │ ├── C-Z6.0+fencembonceonce+pooncerelease+poreleaseacquire.litmus │ ├── C-Z6.0+fencembonceonce+pooncerelease+poreleaseonce.litmus │ ├── C-Z6.0+poonceonce+ctrlonceonce+poonceacquire.litmus │ ├── C-Z6.0+poonceonce+ctrlonceonce+poreleaseacquire.litmus │ ├── C-Z6.0+poonceonce+ctrlonceonce+poreleaseonce.litmus │ ├── C-Z6.0+poonceonce+fencembonceonce+poonceacquire.litmus │ ├── C-Z6.0+poonceonce+fencembonceonce+poreleaseacquire.litmus │ ├── C-Z6.0+poonceonce+fencembonceonce+poreleaseonce.litmus │ ├── C-Z6.0+poonceonce+poacquireonce+fencembonceonce.litmus │ ├── C-Z6.0+poonceonce+poacquireonce+poonceacquire.litmus │ ├── C-Z6.0+poonceonce+poacquireonce+poonceonce.litmus │ ├── C-Z6.0+poonceonce+poacquireonce+poreleaseacquire.litmus │ ├── C-Z6.0+poonceonce+poacquireonce+poreleaseonce.litmus │ ├── C-Z6.0+poonceonce+poacquirerelease+fencembonceonce.litmus │ ├── C-Z6.0+poonceonce+poacquirerelease+poonceacquire.litmus │ ├── C-Z6.0+poonceonce+poacquirerelease+poonceonce.litmus │ ├── C-Z6.0+poonceonce+poacquirerelease+poreleaseacquire.litmus │ ├── C-Z6.0+poonceonce+poacquirerelease+poreleaseonce.litmus │ ├── C-Z6.0+poonceonce+poonceonce+poonceacquire.litmus │ ├── C-Z6.0+poonceonce+poonceonce+poreleaseacquire.litmus │ ├── C-Z6.0+poonceonce+poonceonce+poreleaseonce.litmus │ ├── C-Z6.0+poonceonce+pooncerelease+fencembonceonce.litmus │ ├── C-Z6.0+poonceonce+pooncerelease+poonceacquire.litmus │ ├── C-Z6.0+poonceonce+pooncerelease+poonceonce.litmus │ ├── C-Z6.0+poonceonce+pooncerelease+poreleaseacquire.litmus │ ├── C-Z6.0+poonceonce+pooncerelease+poreleaseonce.litmus │ ├── C-Z6.0+pooncerelease+ctrlonceonce+fencembonceonce.litmus │ ├── C-Z6.0+pooncerelease+ctrlonceonce+poonceacquire.litmus │ ├── C-Z6.0+pooncerelease+ctrlonceonce+poonceonce.litmus │ ├── C-Z6.0+pooncerelease+ctrlonceonce+poreleaseacquire.litmus │ ├── C-Z6.0+pooncerelease+ctrlonceonce+poreleaseonce.litmus │ ├── C-Z6.0+pooncerelease+fencembonceonce+fencembonceonce.litmus │ ├── C-Z6.0+pooncerelease+fencembonceonce+poonceacquire.litmus │ ├── C-Z6.0+pooncerelease+fencembonceonce+poonceonce.litmus │ ├── C-Z6.0+pooncerelease+fencembonceonce+poreleaseacquire.litmus │ ├── C-Z6.0+pooncerelease+fencembonceonce+poreleaseonce.litmus │ ├── C-Z6.0+pooncerelease+poacquireonce+fencembonceonce.litmus │ ├── C-Z6.0+pooncerelease+poacquireonce+poonceacquire.litmus │ ├── C-Z6.0+pooncerelease+poacquireonce+poonceonce.litmus │ ├── C-Z6.0+pooncerelease+poacquireonce+poreleaseacquire.litmus │ ├── C-Z6.0+pooncerelease+poacquireonce+poreleaseonce.litmus │ ├── C-Z6.0+pooncerelease+poacquirerelease+fencembonceonce.litmus │ ├── C-Z6.0+pooncerelease+poacquirerelease+poonceacquire.litmus │ ├── C-Z6.0+pooncerelease+poacquirerelease+poonceonce.litmus │ ├── C-Z6.0+pooncerelease+poacquirerelease+poreleaseacquire.litmus │ ├── C-Z6.0+pooncerelease+poacquirerelease+poreleaseonce.litmus │ ├── C-Z6.0+pooncerelease+poonceonce+fencembonceonce.litmus │ ├── C-Z6.0+pooncerelease+poonceonce+poonceacquire.litmus │ ├── C-Z6.0+pooncerelease+poonceonce+poonceonce.litmus │ ├── C-Z6.0+pooncerelease+poonceonce+poreleaseacquire.litmus │ ├── C-Z6.0+pooncerelease+poonceonce+poreleaseonce.litmus │ ├── C-Z6.0+pooncerelease+pooncerelease+fencembonceonce.litmus │ ├── C-Z6.0+pooncerelease+pooncerelease+poonceacquire.litmus │ ├── C-Z6.0+pooncerelease+pooncerelease+poonceonce.litmus │ ├── C-Z6.0+pooncerelease+pooncerelease+poreleaseacquire.litmus │ ├── C-Z6.0+pooncerelease+pooncerelease+poreleaseonce.litmus │ ├── C-Z6.0+poreleaseonce+ctrlonceonce+fencembonceonce.litmus │ ├── C-Z6.0+poreleaseonce+ctrlonceonce+poonceacquire.litmus │ ├── C-Z6.0+poreleaseonce+ctrlonceonce+poonceonce.litmus │ ├── C-Z6.0+poreleaseonce+ctrlonceonce+poreleaseacquire.litmus │ ├── C-Z6.0+poreleaseonce+ctrlonceonce+poreleaseonce.litmus │ ├── C-Z6.0+poreleaseonce+fencembonceonce+fencembonceonce.litmus │ ├── C-Z6.0+poreleaseonce+fencembonceonce+poonceacquire.litmus │ ├── C-Z6.0+poreleaseonce+fencembonceonce+poonceonce.litmus │ ├── C-Z6.0+poreleaseonce+fencembonceonce+poreleaseacquire.litmus │ ├── C-Z6.0+poreleaseonce+fencembonceonce+poreleaseonce.litmus │ ├── C-Z6.0+poreleaseonce+poacquireonce+fencembonceonce.litmus │ ├── C-Z6.0+poreleaseonce+poacquireonce+poonceacquire.litmus │ ├── C-Z6.0+poreleaseonce+poacquireonce+poonceonce.litmus │ ├── C-Z6.0+poreleaseonce+poacquireonce+poreleaseacquire.litmus │ ├── C-Z6.0+poreleaseonce+poacquireonce+poreleaseonce.litmus │ ├── C-Z6.0+poreleaseonce+poacquirerelease+fencembonceonce.litmus │ ├── C-Z6.0+poreleaseonce+poacquirerelease+poonceacquire.litmus │ ├── C-Z6.0+poreleaseonce+poacquirerelease+poonceonce.litmus │ ├── C-Z6.0+poreleaseonce+poacquirerelease+poreleaseacquire.litmus │ ├── C-Z6.0+poreleaseonce+poacquirerelease+poreleaseonce.litmus │ ├── C-Z6.0+poreleaseonce+poonceonce+fencembonceonce.litmus │ ├── C-Z6.0+poreleaseonce+poonceonce+poonceacquire.litmus │ ├── C-Z6.0+poreleaseonce+poonceonce+poonceonce.litmus │ ├── C-Z6.0+poreleaseonce+poonceonce+poreleaseacquire.litmus │ ├── C-Z6.0+poreleaseonce+poonceonce+poreleaseonce.litmus │ ├── C-Z6.0+poreleaseonce+pooncerelease+fencembonceonce.litmus │ ├── C-Z6.0+poreleaseonce+pooncerelease+poonceacquire.litmus │ ├── C-Z6.0+poreleaseonce+pooncerelease+poonceonce.litmus │ ├── C-Z6.0+poreleaseonce+pooncerelease+poreleaseacquire.litmus │ ├── C-Z6.0+poreleaseonce+pooncerelease+poreleaseonce.litmus │ ├── C-Z6.0+poreleaserelease+ctrlonceonce+fencembonceonce.litmus │ ├── C-Z6.0+poreleaserelease+ctrlonceonce+poonceacquire.litmus │ ├── C-Z6.0+poreleaserelease+ctrlonceonce+poonceonce.litmus │ ├── C-Z6.0+poreleaserelease+ctrlonceonce+poreleaseacquire.litmus │ ├── C-Z6.0+poreleaserelease+ctrlonceonce+poreleaseonce.litmus │ ├── C-Z6.0+poreleaserelease+fencembonceonce+fencembonceonce.litmus │ ├── C-Z6.0+poreleaserelease+fencembonceonce+poonceacquire.litmus │ ├── C-Z6.0+poreleaserelease+fencembonceonce+poonceonce.litmus │ ├── C-Z6.0+poreleaserelease+fencembonceonce+poreleaseacquire.litmus │ ├── C-Z6.0+poreleaserelease+fencembonceonce+poreleaseonce.litmus │ ├── C-Z6.0+poreleaserelease+poacquireonce+fencembonceonce.litmus │ ├── C-Z6.0+poreleaserelease+poacquireonce+poonceacquire.litmus │ ├── C-Z6.0+poreleaserelease+poacquireonce+poonceonce.litmus │ ├── C-Z6.0+poreleaserelease+poacquireonce+poreleaseacquire.litmus │ ├── C-Z6.0+poreleaserelease+poacquireonce+poreleaseonce.litmus │ ├── C-Z6.0+poreleaserelease+poacquirerelease+fencembonceonce.litmus │ ├── C-Z6.0+poreleaserelease+poacquirerelease+poonceacquire.litmus │ ├── C-Z6.0+poreleaserelease+poacquirerelease+poonceonce.litmus │ ├── C-Z6.0+poreleaserelease+poacquirerelease+poreleaseacquire.litmus │ ├── C-Z6.0+poreleaserelease+poacquirerelease+poreleaseonce.litmus │ ├── C-Z6.0+poreleaserelease+poonceonce+fencembonceonce.litmus │ ├── C-Z6.0+poreleaserelease+poonceonce+poonceacquire.litmus │ ├── C-Z6.0+poreleaserelease+poonceonce+poonceonce.litmus │ ├── C-Z6.0+poreleaserelease+poonceonce+poreleaseacquire.litmus │ ├── C-Z6.0+poreleaserelease+poonceonce+poreleaseonce.litmus │ ├── C-Z6.0+poreleaserelease+pooncerelease+fencembonceonce.litmus │ ├── C-Z6.0+poreleaserelease+pooncerelease+poonceacquire.litmus │ ├── C-Z6.0+poreleaserelease+pooncerelease+poonceonce.litmus │ ├── C-Z6.0+poreleaserelease+pooncerelease+poreleaseacquire.litmus │ ├── C-Z6.0+poreleaserelease+pooncerelease+poreleaseonce.litmus │ ├── C-Z6.1+fencembonceonce+fencembonceonce+poacquireonce.litmus │ ├── C-Z6.1+fencembonceonce+fencembonceonce+poacquirerelease.litmus │ ├── C-Z6.1+fencembonceonce+fencembonceonce+pooncerelease.litmus │ ├── C-Z6.1+fencembonceonce+poonceonce+poacquireonce.litmus │ ├── C-Z6.1+fencembonceonce+poonceonce+poacquirerelease.litmus │ ├── C-Z6.1+fencembonceonce+poonceonce+pooncerelease.litmus │ ├── C-Z6.1+fencembonceonce+pooncerelease+ctrlonceonce.litmus │ ├── C-Z6.1+fencembonceonce+pooncerelease+fencembonceonce.litmus │ ├── C-Z6.1+fencembonceonce+pooncerelease+poacquireonce.litmus │ ├── C-Z6.1+fencembonceonce+pooncerelease+poacquirerelease.litmus │ ├── C-Z6.1+fencembonceonce+pooncerelease+poonceonce.litmus │ ├── C-Z6.1+fencembonceonce+pooncerelease+pooncerelease.litmus │ ├── C-Z6.1+fencembonceonce+poreleaseonce+ctrlonceonce.litmus │ ├── C-Z6.1+fencembonceonce+poreleaseonce+fencembonceonce.litmus │ ├── C-Z6.1+fencembonceonce+poreleaseonce+poacquireonce.litmus │ ├── C-Z6.1+fencembonceonce+poreleaseonce+poacquirerelease.litmus │ ├── C-Z6.1+fencembonceonce+poreleaseonce+poonceonce.litmus │ ├── C-Z6.1+fencembonceonce+poreleaseonce+pooncerelease.litmus │ ├── C-Z6.1+fencembonceonce+poreleaserelease+ctrlonceonce.litmus │ ├── C-Z6.1+fencembonceonce+poreleaserelease+fencembonceonce.litmus │ ├── C-Z6.1+fencembonceonce+poreleaserelease+poacquireonce.litmus │ ├── C-Z6.1+fencembonceonce+poreleaserelease+poacquirerelease.litmus │ ├── C-Z6.1+fencembonceonce+poreleaserelease+poonceonce.litmus │ ├── C-Z6.1+fencembonceonce+poreleaserelease+pooncerelease.litmus │ ├── C-Z6.1+poonceonce+fencembonceonce+poacquireonce.litmus │ ├── C-Z6.1+poonceonce+fencembonceonce+poacquirerelease.litmus │ ├── C-Z6.1+poonceonce+fencembonceonce+pooncerelease.litmus │ ├── C-Z6.1+poonceonce+poonceonce+poacquireonce.litmus │ ├── C-Z6.1+poonceonce+poonceonce+poacquirerelease.litmus │ ├── C-Z6.1+poonceonce+poonceonce+pooncerelease.litmus │ ├── C-Z6.1+poonceonce+pooncerelease+ctrlonceonce.litmus │ ├── C-Z6.1+poonceonce+pooncerelease+fencembonceonce.litmus │ ├── C-Z6.1+poonceonce+pooncerelease+poacquireonce.litmus │ ├── C-Z6.1+poonceonce+pooncerelease+poacquirerelease.litmus │ ├── C-Z6.1+poonceonce+pooncerelease+poonceonce.litmus │ ├── C-Z6.1+poonceonce+pooncerelease+pooncerelease.litmus │ ├── C-Z6.1+poonceonce+poreleaseonce+ctrlonceonce.litmus │ ├── C-Z6.1+poonceonce+poreleaseonce+fencembonceonce.litmus │ ├── C-Z6.1+poonceonce+poreleaseonce+poacquireonce.litmus │ ├── C-Z6.1+poonceonce+poreleaseonce+poacquirerelease.litmus │ ├── C-Z6.1+poonceonce+poreleaseonce+poonceonce.litmus │ ├── C-Z6.1+poonceonce+poreleaseonce+pooncerelease.litmus │ ├── C-Z6.1+poonceonce+poreleaserelease+ctrlonceonce.litmus │ ├── C-Z6.1+poonceonce+poreleaserelease+fencembonceonce.litmus │ ├── C-Z6.1+poonceonce+poreleaserelease+poacquireonce.litmus │ ├── C-Z6.1+poonceonce+poreleaserelease+poacquirerelease.litmus │ ├── C-Z6.1+poonceonce+poreleaserelease+poonceonce.litmus │ ├── C-Z6.1+poonceonce+poreleaserelease+pooncerelease.litmus │ ├── C-Z6.1+pooncerelease+fencembonceonce+ctrlonceonce.litmus │ ├── C-Z6.1+pooncerelease+fencembonceonce+fencembonceonce.litmus │ ├── C-Z6.1+pooncerelease+fencembonceonce+poacquireonce.litmus │ ├── C-Z6.1+pooncerelease+fencembonceonce+poacquirerelease.litmus │ ├── C-Z6.1+pooncerelease+fencembonceonce+poonceonce.litmus │ ├── C-Z6.1+pooncerelease+fencembonceonce+pooncerelease.litmus │ ├── C-Z6.1+pooncerelease+poonceonce+ctrlonceonce.litmus │ ├── C-Z6.1+pooncerelease+poonceonce+fencembonceonce.litmus │ ├── C-Z6.1+pooncerelease+poonceonce+poacquireonce.litmus │ ├── C-Z6.1+pooncerelease+poonceonce+poacquirerelease.litmus │ ├── C-Z6.1+pooncerelease+poonceonce+poonceonce.litmus │ ├── C-Z6.1+pooncerelease+poonceonce+pooncerelease.litmus │ ├── C-Z6.1+pooncerelease+pooncerelease+ctrlonceonce.litmus │ ├── C-Z6.1+pooncerelease+pooncerelease+fencembonceonce.litmus │ ├── C-Z6.1+pooncerelease+pooncerelease+poacquireonce.litmus │ ├── C-Z6.1+pooncerelease+pooncerelease+poacquirerelease.litmus │ ├── C-Z6.1+pooncerelease+pooncerelease+poonceonce.litmus │ ├── C-Z6.1+pooncerelease+poreleaseonce+ctrlonceonce.litmus │ ├── C-Z6.1+pooncerelease+poreleaseonce+fencembonceonce.litmus │ ├── C-Z6.1+pooncerelease+poreleaseonce+poacquireonce.litmus │ ├── C-Z6.1+pooncerelease+poreleaseonce+poacquirerelease.litmus │ ├── C-Z6.1+pooncerelease+poreleaseonce+poonceonce.litmus │ ├── C-Z6.1+pooncerelease+poreleaseonce+pooncerelease.litmus │ ├── C-Z6.1+pooncerelease+poreleaserelease+ctrlonceonce.litmus │ ├── C-Z6.1+pooncerelease+poreleaserelease+fencembonceonce.litmus │ ├── C-Z6.1+pooncerelease+poreleaserelease+poacquireonce.litmus │ ├── C-Z6.1+pooncerelease+poreleaserelease+poacquirerelease.litmus │ ├── C-Z6.1+pooncerelease+poreleaserelease+poonceonce.litmus │ ├── C-Z6.1+pooncerelease+poreleaserelease+pooncerelease.litmus │ ├── C-Z6.1+pooncereleases.litmus │ ├── C-Z6.1+poreleaseonce+fencembonceonce+ctrlonceonce.litmus │ ├── C-Z6.1+poreleaseonce+fencembonceonce+fencembonceonce.litmus │ ├── C-Z6.1+poreleaseonce+fencembonceonce+poacquireonce.litmus │ ├── C-Z6.1+poreleaseonce+fencembonceonce+poacquirerelease.litmus │ ├── C-Z6.1+poreleaseonce+fencembonceonce+poonceonce.litmus │ ├── C-Z6.1+poreleaseonce+fencembonceonce+pooncerelease.litmus │ ├── C-Z6.1+poreleaseonce+poonceonce+ctrlonceonce.litmus │ ├── C-Z6.1+poreleaseonce+poonceonce+fencembonceonce.litmus │ ├── C-Z6.1+poreleaseonce+poonceonce+poacquireonce.litmus │ ├── C-Z6.1+poreleaseonce+poonceonce+poacquirerelease.litmus │ ├── C-Z6.1+poreleaseonce+poonceonce+poonceonce.litmus │ ├── C-Z6.1+poreleaseonce+poonceonce+pooncerelease.litmus │ ├── C-Z6.1+poreleaseonce+pooncerelease+ctrlonceonce.litmus │ ├── C-Z6.1+poreleaseonce+pooncerelease+fencembonceonce.litmus │ ├── C-Z6.1+poreleaseonce+pooncerelease+poacquireonce.litmus │ ├── C-Z6.1+poreleaseonce+pooncerelease+poacquirerelease.litmus │ ├── C-Z6.1+poreleaseonce+pooncerelease+poonceonce.litmus │ ├── C-Z6.1+poreleaseonce+pooncerelease+pooncerelease.litmus │ ├── C-Z6.1+poreleaseonce+poreleaseonce+ctrlonceonce.litmus │ ├── C-Z6.1+poreleaseonce+poreleaseonce+fencembonceonce.litmus │ ├── C-Z6.1+poreleaseonce+poreleaseonce+poacquireonce.litmus │ ├── C-Z6.1+poreleaseonce+poreleaseonce+poacquirerelease.litmus │ ├── C-Z6.1+poreleaseonce+poreleaseonce+poonceonce.litmus │ ├── C-Z6.1+poreleaseonce+poreleaseonce+pooncerelease.litmus │ ├── C-Z6.1+poreleaseonce+poreleaserelease+ctrlonceonce.litmus │ ├── C-Z6.1+poreleaseonce+poreleaserelease+fencembonceonce.litmus │ ├── C-Z6.1+poreleaseonce+poreleaserelease+poacquireonce.litmus │ ├── C-Z6.1+poreleaseonce+poreleaserelease+poacquirerelease.litmus │ ├── C-Z6.1+poreleaseonce+poreleaserelease+poonceonce.litmus │ ├── C-Z6.1+poreleaseonce+poreleaserelease+pooncerelease.litmus │ ├── C-Z6.1+poreleaserelease+fencembonceonce+ctrlonceonce.litmus │ ├── C-Z6.1+poreleaserelease+fencembonceonce+fencembonceonce.litmus │ ├── C-Z6.1+poreleaserelease+fencembonceonce+poacquireonce.litmus │ ├── C-Z6.1+poreleaserelease+fencembonceonce+poacquirerelease.litmus │ ├── C-Z6.1+poreleaserelease+fencembonceonce+poonceonce.litmus │ ├── C-Z6.1+poreleaserelease+fencembonceonce+pooncerelease.litmus │ ├── C-Z6.1+poreleaserelease+poonceonce+ctrlonceonce.litmus │ ├── C-Z6.1+poreleaserelease+poonceonce+fencembonceonce.litmus │ ├── C-Z6.1+poreleaserelease+poonceonce+poacquireonce.litmus │ ├── C-Z6.1+poreleaserelease+poonceonce+poacquirerelease.litmus │ ├── C-Z6.1+poreleaserelease+poonceonce+poonceonce.litmus │ ├── C-Z6.1+poreleaserelease+poonceonce+pooncerelease.litmus │ ├── C-Z6.1+poreleaserelease+pooncerelease+ctrlonceonce.litmus │ ├── C-Z6.1+poreleaserelease+pooncerelease+fencembonceonce.litmus │ ├── C-Z6.1+poreleaserelease+pooncerelease+poacquireonce.litmus │ ├── C-Z6.1+poreleaserelease+pooncerelease+poacquirerelease.litmus │ ├── C-Z6.1+poreleaserelease+pooncerelease+poonceonce.litmus │ ├── C-Z6.1+poreleaserelease+pooncerelease+pooncerelease.litmus │ ├── C-Z6.1+poreleaserelease+poreleaseonce+ctrlonceonce.litmus │ ├── C-Z6.1+poreleaserelease+poreleaseonce+fencembonceonce.litmus │ ├── C-Z6.1+poreleaserelease+poreleaseonce+poacquireonce.litmus │ ├── C-Z6.1+poreleaserelease+poreleaseonce+poacquirerelease.litmus │ ├── C-Z6.1+poreleaserelease+poreleaseonce+poonceonce.litmus │ ├── C-Z6.1+poreleaserelease+poreleaseonce+pooncerelease.litmus │ ├── C-Z6.1+poreleaserelease+poreleaserelease+ctrlonceonce.litmus │ ├── C-Z6.1+poreleaserelease+poreleaserelease+fencembonceonce.litmus │ ├── C-Z6.1+poreleaserelease+poreleaserelease+poacquireonce.litmus │ ├── C-Z6.1+poreleaserelease+poreleaserelease+poacquirerelease.litmus │ ├── C-Z6.1+poreleaserelease+poreleaserelease+poonceonce.litmus │ ├── C-Z6.1+poreleaserelease+poreleaserelease+pooncerelease.litmus │ ├── C-Z6.2+fencembonceonce+ctrlonceonce+poacquireonce.litmus │ ├── C-Z6.2+fencembonceonce+ctrlonceonce+poacquirerelease.litmus │ ├── C-Z6.2+fencembonceonce+ctrlonceonce+pooncerelease.litmus │ ├── C-Z6.2+fencembonceonce+fencembonceonce+poacquireonce.litmus │ ├── C-Z6.2+fencembonceonce+fencembonceonce+poacquirerelease.litmus │ ├── C-Z6.2+fencembonceonce+fencembonceonce+pooncerelease.litmus │ ├── C-Z6.2+fencembonceonce+poacquireonce+ctrlonceonce.litmus │ ├── C-Z6.2+fencembonceonce+poacquireonce+fencembonceonce.litmus │ ├── C-Z6.2+fencembonceonce+poacquireonce+poacquireonce.litmus │ ├── C-Z6.2+fencembonceonce+poacquireonce+poacquirerelease.litmus │ ├── C-Z6.2+fencembonceonce+poacquireonce+poonceonce.litmus │ ├── C-Z6.2+fencembonceonce+poacquireonce+pooncerelease.litmus │ ├── C-Z6.2+fencembonceonce+poacquirerelease+ctrlonceonce.litmus │ ├── C-Z6.2+fencembonceonce+poacquirerelease+fencembonceonce.litmus │ ├── C-Z6.2+fencembonceonce+poacquirerelease+poacquireonce.litmus │ ├── C-Z6.2+fencembonceonce+poacquirerelease+poacquirerelease.litmus │ ├── C-Z6.2+fencembonceonce+poacquirerelease+poonceonce.litmus │ ├── C-Z6.2+fencembonceonce+poacquirerelease+pooncerelease.litmus │ ├── C-Z6.2+fencembonceonce+poonceonce+poacquireonce.litmus │ ├── C-Z6.2+fencembonceonce+poonceonce+poacquirerelease.litmus │ ├── C-Z6.2+fencembonceonce+poonceonce+pooncerelease.litmus │ ├── C-Z6.2+fencembonceonce+pooncerelease+ctrlonceonce.litmus │ ├── C-Z6.2+fencembonceonce+pooncerelease+fencembonceonce.litmus │ ├── C-Z6.2+fencembonceonce+pooncerelease+poacquireonce.litmus │ ├── C-Z6.2+fencembonceonce+pooncerelease+poacquirerelease.litmus │ ├── C-Z6.2+fencembonceonce+pooncerelease+poonceonce.litmus │ ├── C-Z6.2+fencembonceonce+pooncerelease+pooncerelease.litmus │ ├── C-Z6.2+poonceonce+ctrlonceonce+poacquireonce.litmus │ ├── C-Z6.2+poonceonce+ctrlonceonce+poacquirerelease.litmus │ ├── C-Z6.2+poonceonce+ctrlonceonce+pooncerelease.litmus │ ├── C-Z6.2+poonceonce+fencembonceonce+poacquireonce.litmus │ ├── C-Z6.2+poonceonce+fencembonceonce+poacquirerelease.litmus │ ├── C-Z6.2+poonceonce+fencembonceonce+pooncerelease.litmus │ ├── C-Z6.2+poonceonce+poacquireonce+ctrlonceonce.litmus │ ├── C-Z6.2+poonceonce+poacquireonce+fencembonceonce.litmus │ ├── C-Z6.2+poonceonce+poacquireonce+poacquireonce.litmus │ ├── C-Z6.2+poonceonce+poacquireonce+poacquirerelease.litmus │ ├── C-Z6.2+poonceonce+poacquireonce+poonceonce.litmus │ ├── C-Z6.2+poonceonce+poacquireonce+pooncerelease.litmus │ ├── C-Z6.2+poonceonce+poacquirerelease+ctrlonceonce.litmus │ ├── C-Z6.2+poonceonce+poacquirerelease+fencembonceonce.litmus │ ├── C-Z6.2+poonceonce+poacquirerelease+poacquireonce.litmus │ ├── C-Z6.2+poonceonce+poacquirerelease+poacquirerelease.litmus │ ├── C-Z6.2+poonceonce+poacquirerelease+poonceonce.litmus │ ├── C-Z6.2+poonceonce+poacquirerelease+pooncerelease.litmus │ ├── C-Z6.2+poonceonce+poonceonce+poacquireonce.litmus │ ├── C-Z6.2+poonceonce+poonceonce+poacquirerelease.litmus │ ├── C-Z6.2+poonceonce+poonceonce+pooncerelease.litmus │ ├── C-Z6.2+poonceonce+pooncerelease+ctrlonceonce.litmus │ ├── C-Z6.2+poonceonce+pooncerelease+fencembonceonce.litmus │ ├── C-Z6.2+poonceonce+pooncerelease+poacquireonce.litmus │ ├── C-Z6.2+poonceonce+pooncerelease+poacquirerelease.litmus │ ├── C-Z6.2+poonceonce+pooncerelease+poonceonce.litmus │ ├── C-Z6.2+poonceonce+pooncerelease+pooncerelease.litmus │ ├── C-Z6.2+pooncerelease+ctrlonceonce+ctrlonceonce.litmus │ ├── C-Z6.2+pooncerelease+ctrlonceonce+fencembonceonce.litmus │ ├── C-Z6.2+pooncerelease+ctrlonceonce+poacquireonce.litmus │ ├── C-Z6.2+pooncerelease+ctrlonceonce+poacquirerelease.litmus │ ├── C-Z6.2+pooncerelease+ctrlonceonce+poonceonce.litmus │ ├── C-Z6.2+pooncerelease+ctrlonceonce+pooncerelease.litmus │ ├── C-Z6.2+pooncerelease+fencembonceonce+ctrlonceonce.litmus │ ├── C-Z6.2+pooncerelease+fencembonceonce+fencembonceonce.litmus │ ├── C-Z6.2+pooncerelease+fencembonceonce+poacquireonce.litmus │ ├── C-Z6.2+pooncerelease+fencembonceonce+poacquirerelease.litmus │ ├── C-Z6.2+pooncerelease+fencembonceonce+poonceonce.litmus │ ├── C-Z6.2+pooncerelease+fencembonceonce+pooncerelease.litmus │ ├── C-Z6.2+pooncerelease+poacquireonce+ctrlonceonce.litmus │ ├── C-Z6.2+pooncerelease+poacquireonce+fencembonceonce.litmus │ ├── C-Z6.2+pooncerelease+poacquireonce+poacquireonce.litmus │ ├── C-Z6.2+pooncerelease+poacquireonce+poacquirerelease.litmus │ ├── C-Z6.2+pooncerelease+poacquireonce+poonceonce.litmus │ ├── C-Z6.2+pooncerelease+poacquireonce+pooncerelease.litmus │ ├── C-Z6.2+pooncerelease+poacquirerelease+ctrlonceonce.litmus │ ├── C-Z6.2+pooncerelease+poacquirerelease+fencembonceonce.litmus │ ├── C-Z6.2+pooncerelease+poacquirerelease+poacquireonce.litmus │ ├── C-Z6.2+pooncerelease+poacquirerelease+poacquirerelease.litmus │ ├── C-Z6.2+pooncerelease+poacquirerelease+poonceonce.litmus │ ├── C-Z6.2+pooncerelease+poacquirerelease+pooncerelease.litmus │ ├── C-Z6.2+pooncerelease+poonceonce+ctrlonceonce.litmus │ ├── C-Z6.2+pooncerelease+poonceonce+fencembonceonce.litmus │ ├── C-Z6.2+pooncerelease+poonceonce+poacquireonce.litmus │ ├── C-Z6.2+pooncerelease+poonceonce+poacquirerelease.litmus │ ├── C-Z6.2+pooncerelease+poonceonce+poonceonce.litmus │ ├── C-Z6.2+pooncerelease+poonceonce+pooncerelease.litmus │ ├── C-Z6.2+pooncerelease+pooncerelease+ctrlonceonce.litmus │ ├── C-Z6.2+pooncerelease+pooncerelease+fencembonceonce.litmus │ ├── C-Z6.2+pooncerelease+pooncerelease+poacquireonce.litmus │ ├── C-Z6.2+pooncerelease+pooncerelease+poacquirerelease.litmus │ ├── C-Z6.2+pooncerelease+pooncerelease+poonceonce.litmus │ ├── C-Z6.2+pooncereleases.litmus │ ├── C-Z6.2+poreleaseonce+ctrlonceonce+ctrlonceonce.litmus │ ├── C-Z6.2+poreleaseonce+ctrlonceonce+fencembonceonce.litmus │ ├── C-Z6.2+poreleaseonce+ctrlonceonce+poacquireonce.litmus │ ├── C-Z6.2+poreleaseonce+ctrlonceonce+poacquirerelease.litmus │ ├── C-Z6.2+poreleaseonce+ctrlonceonce+poonceonce.litmus │ ├── C-Z6.2+poreleaseonce+ctrlonceonce+pooncerelease.litmus │ ├── C-Z6.2+poreleaseonce+fencembonceonce+ctrlonceonce.litmus │ ├── C-Z6.2+poreleaseonce+fencembonceonce+fencembonceonce.litmus │ ├── C-Z6.2+poreleaseonce+fencembonceonce+poacquireonce.litmus │ ├── C-Z6.2+poreleaseonce+fencembonceonce+poacquirerelease.litmus │ ├── C-Z6.2+poreleaseonce+fencembonceonce+poonceonce.litmus │ ├── C-Z6.2+poreleaseonce+fencembonceonce+pooncerelease.litmus │ ├── C-Z6.2+poreleaseonce+poacquireonce+ctrlonceonce.litmus │ ├── C-Z6.2+poreleaseonce+poacquireonce+fencembonceonce.litmus │ ├── C-Z6.2+poreleaseonce+poacquireonce+poacquireonce.litmus │ ├── C-Z6.2+poreleaseonce+poacquireonce+poacquirerelease.litmus │ ├── C-Z6.2+poreleaseonce+poacquireonce+poonceonce.litmus │ ├── C-Z6.2+poreleaseonce+poacquireonce+pooncerelease.litmus │ ├── C-Z6.2+poreleaseonce+poacquirerelease+ctrlonceonce.litmus │ ├── C-Z6.2+poreleaseonce+poacquirerelease+fencembonceonce.litmus │ ├── C-Z6.2+poreleaseonce+poacquirerelease+poacquireonce.litmus │ ├── C-Z6.2+poreleaseonce+poacquirerelease+poacquirerelease.litmus │ ├── C-Z6.2+poreleaseonce+poacquirerelease+poonceonce.litmus │ ├── C-Z6.2+poreleaseonce+poacquirerelease+pooncerelease.litmus │ ├── C-Z6.2+poreleaseonce+poonceonce+ctrlonceonce.litmus │ ├── C-Z6.2+poreleaseonce+poonceonce+fencembonceonce.litmus │ ├── C-Z6.2+poreleaseonce+poonceonce+poacquireonce.litmus │ ├── C-Z6.2+poreleaseonce+poonceonce+poacquirerelease.litmus │ ├── C-Z6.2+poreleaseonce+poonceonce+poonceonce.litmus │ ├── C-Z6.2+poreleaseonce+poonceonce+pooncerelease.litmus │ ├── C-Z6.2+poreleaseonce+pooncerelease+ctrlonceonce.litmus │ ├── C-Z6.2+poreleaseonce+pooncerelease+fencembonceonce.litmus │ ├── C-Z6.2+poreleaseonce+pooncerelease+poacquireonce.litmus │ ├── C-Z6.2+poreleaseonce+pooncerelease+poacquirerelease.litmus │ ├── C-Z6.2+poreleaseonce+pooncerelease+poonceonce.litmus │ ├── C-Z6.2+poreleaseonce+pooncerelease+pooncerelease.litmus │ ├── C-Z6.2+poreleaserelease+ctrlonceonce+ctrlonceonce.litmus │ ├── C-Z6.2+poreleaserelease+ctrlonceonce+fencembonceonce.litmus │ ├── C-Z6.2+poreleaserelease+ctrlonceonce+poacquireonce.litmus │ ├── C-Z6.2+poreleaserelease+ctrlonceonce+poacquirerelease.litmus │ ├── C-Z6.2+poreleaserelease+ctrlonceonce+poonceonce.litmus │ ├── C-Z6.2+poreleaserelease+ctrlonceonce+pooncerelease.litmus │ ├── C-Z6.2+poreleaserelease+fencembonceonce+ctrlonceonce.litmus │ ├── C-Z6.2+poreleaserelease+fencembonceonce+fencembonceonce.litmus │ ├── C-Z6.2+poreleaserelease+fencembonceonce+poacquireonce.litmus │ ├── C-Z6.2+poreleaserelease+fencembonceonce+poacquirerelease.litmus │ ├── C-Z6.2+poreleaserelease+fencembonceonce+poonceonce.litmus │ ├── C-Z6.2+poreleaserelease+fencembonceonce+pooncerelease.litmus │ ├── C-Z6.2+poreleaserelease+poacquireonce+ctrlonceonce.litmus │ ├── C-Z6.2+poreleaserelease+poacquireonce+fencembonceonce.litmus │ ├── C-Z6.2+poreleaserelease+poacquireonce+poacquireonce.litmus │ ├── C-Z6.2+poreleaserelease+poacquireonce+poacquirerelease.litmus │ ├── C-Z6.2+poreleaserelease+poacquireonce+poonceonce.litmus │ ├── C-Z6.2+poreleaserelease+poacquireonce+pooncerelease.litmus │ ├── C-Z6.2+poreleaserelease+poacquirerelease+ctrlonceonce.litmus │ ├── C-Z6.2+poreleaserelease+poacquirerelease+fencembonceonce.litmus │ ├── C-Z6.2+poreleaserelease+poacquirerelease+poacquireonce.litmus │ ├── C-Z6.2+poreleaserelease+poacquirerelease+poacquirerelease.litmus │ ├── C-Z6.2+poreleaserelease+poacquirerelease+poonceonce.litmus │ ├── C-Z6.2+poreleaserelease+poacquirerelease+pooncerelease.litmus │ ├── C-Z6.2+poreleaserelease+poonceonce+ctrlonceonce.litmus │ ├── C-Z6.2+poreleaserelease+poonceonce+fencembonceonce.litmus │ ├── C-Z6.2+poreleaserelease+poonceonce+poacquireonce.litmus │ ├── C-Z6.2+poreleaserelease+poonceonce+poacquirerelease.litmus │ ├── C-Z6.2+poreleaserelease+poonceonce+poonceonce.litmus │ ├── C-Z6.2+poreleaserelease+poonceonce+pooncerelease.litmus │ ├── C-Z6.2+poreleaserelease+pooncerelease+ctrlonceonce.litmus │ ├── C-Z6.2+poreleaserelease+pooncerelease+fencembonceonce.litmus │ ├── C-Z6.2+poreleaserelease+pooncerelease+poacquireonce.litmus │ ├── C-Z6.2+poreleaserelease+pooncerelease+poacquirerelease.litmus │ ├── C-Z6.2+poreleaserelease+pooncerelease+poonceonce.litmus │ ├── C-Z6.2+poreleaserelease+pooncerelease+pooncerelease.litmus │ ├── C-Z6.3+fencembonceonce+fencembonceonce+poacquireacquire.litmus │ ├── C-Z6.3+fencembonceonce+fencembonceonce+poacquireonce.litmus │ ├── C-Z6.3+fencembonceonce+fencembonceonce+poonceacquire.litmus │ ├── C-Z6.3+fencembonceonce+poonceonce+poacquireacquire.litmus │ ├── C-Z6.3+fencembonceonce+poonceonce+poacquireonce.litmus │ ├── C-Z6.3+fencembonceonce+poonceonce+poonceacquire.litmus │ ├── C-Z6.3+fencembonceonce+pooncerelease+fencembonceonce.litmus │ ├── C-Z6.3+fencembonceonce+pooncerelease+poacquireacquire.litmus │ ├── C-Z6.3+fencembonceonce+pooncerelease+poacquireonce.litmus │ ├── C-Z6.3+fencembonceonce+pooncerelease+poonceacquire.litmus │ ├── C-Z6.3+fencembonceonce+pooncerelease+poonceonce.litmus │ ├── C-Z6.3+fencembonceonce+poreleaseonce+fencembonceonce.litmus │ ├── C-Z6.3+fencembonceonce+poreleaseonce+poacquireacquire.litmus │ ├── C-Z6.3+fencembonceonce+poreleaseonce+poacquireonce.litmus │ ├── C-Z6.3+fencembonceonce+poreleaseonce+poonceacquire.litmus │ ├── C-Z6.3+fencembonceonce+poreleaseonce+poonceonce.litmus │ ├── C-Z6.3+fencembonceonce+poreleaserelease+fencembonceonce.litmus │ ├── C-Z6.3+fencembonceonce+poreleaserelease+poacquireacquire.litmus │ ├── C-Z6.3+fencembonceonce+poreleaserelease+poacquireonce.litmus │ ├── C-Z6.3+fencembonceonce+poreleaserelease+poonceacquire.litmus │ ├── C-Z6.3+fencembonceonce+poreleaserelease+poonceonce.litmus │ ├── C-Z6.3+poonceonce+fencembonceonce+poacquireacquire.litmus │ ├── C-Z6.3+poonceonce+fencembonceonce+poacquireonce.litmus │ ├── C-Z6.3+poonceonce+fencembonceonce+poonceacquire.litmus │ ├── C-Z6.3+poonceonce+poonceonce+poacquireacquire.litmus │ ├── C-Z6.3+poonceonce+poonceonce+poacquireonce.litmus │ ├── C-Z6.3+poonceonce+poonceonce+poonceacquire.litmus │ ├── C-Z6.3+poonceonce+pooncerelease+fencembonceonce.litmus │ ├── C-Z6.3+poonceonce+pooncerelease+poacquireacquire.litmus │ ├── C-Z6.3+poonceonce+pooncerelease+poacquireonce.litmus │ ├── C-Z6.3+poonceonce+pooncerelease+poonceacquire.litmus │ ├── C-Z6.3+poonceonce+pooncerelease+poonceonce.litmus │ ├── C-Z6.3+poonceonce+poreleaseonce+fencembonceonce.litmus │ ├── C-Z6.3+poonceonce+poreleaseonce+poacquireacquire.litmus │ ├── C-Z6.3+poonceonce+poreleaseonce+poacquireonce.litmus │ ├── C-Z6.3+poonceonce+poreleaseonce+poonceacquire.litmus │ ├── C-Z6.3+poonceonce+poreleaseonce+poonceonce.litmus │ ├── C-Z6.3+poonceonce+poreleaserelease+fencembonceonce.litmus │ ├── C-Z6.3+poonceonce+poreleaserelease+poacquireacquire.litmus │ ├── C-Z6.3+poonceonce+poreleaserelease+poacquireonce.litmus │ ├── C-Z6.3+poonceonce+poreleaserelease+poonceacquire.litmus │ ├── C-Z6.3+poonceonce+poreleaserelease+poonceonce.litmus │ ├── C-Z6.3+pooncerelease+fencembonceonce+fencembonceonce.litmus │ ├── C-Z6.3+pooncerelease+fencembonceonce+poacquireacquire.litmus │ ├── C-Z6.3+pooncerelease+fencembonceonce+poacquireonce.litmus │ ├── C-Z6.3+pooncerelease+fencembonceonce+poonceacquire.litmus │ ├── C-Z6.3+pooncerelease+fencembonceonce+poonceonce.litmus │ ├── C-Z6.3+pooncerelease+poonceonce+fencembonceonce.litmus │ ├── C-Z6.3+pooncerelease+poonceonce+poacquireacquire.litmus │ ├── C-Z6.3+pooncerelease+poonceonce+poacquireonce.litmus │ ├── C-Z6.3+pooncerelease+poonceonce+poonceacquire.litmus │ ├── C-Z6.3+pooncerelease+poonceonce+poonceonce.litmus │ ├── C-Z6.3+pooncerelease+pooncerelease+fencembonceonce.litmus │ ├── C-Z6.3+pooncerelease+pooncerelease+poacquireacquire.litmus │ ├── C-Z6.3+pooncerelease+pooncerelease+poacquireonce.litmus │ ├── C-Z6.3+pooncerelease+pooncerelease+poonceacquire.litmus │ ├── C-Z6.3+pooncerelease+pooncerelease+poonceonce.litmus │ ├── C-Z6.3+pooncerelease+poreleaseonce+fencembonceonce.litmus │ ├── C-Z6.3+pooncerelease+poreleaseonce+poacquireacquire.litmus │ ├── C-Z6.3+pooncerelease+poreleaseonce+poacquireonce.litmus │ ├── C-Z6.3+pooncerelease+poreleaseonce+poonceacquire.litmus │ ├── C-Z6.3+pooncerelease+poreleaseonce+poonceonce.litmus │ ├── C-Z6.3+pooncerelease+poreleaserelease+fencembonceonce.litmus │ ├── C-Z6.3+pooncerelease+poreleaserelease+poacquireacquire.litmus │ ├── C-Z6.3+pooncerelease+poreleaserelease+poacquireonce.litmus │ ├── C-Z6.3+pooncerelease+poreleaserelease+poonceacquire.litmus │ ├── C-Z6.3+pooncerelease+poreleaserelease+poonceonce.litmus │ ├── C-Z6.3+poreleaseonce+fencembonceonce+fencembonceonce.litmus │ ├── C-Z6.3+poreleaseonce+fencembonceonce+poacquireacquire.litmus │ ├── C-Z6.3+poreleaseonce+fencembonceonce+poacquireonce.litmus │ ├── C-Z6.3+poreleaseonce+fencembonceonce+poonceacquire.litmus │ ├── C-Z6.3+poreleaseonce+fencembonceonce+poonceonce.litmus │ ├── C-Z6.3+poreleaseonce+poonceonce+fencembonceonce.litmus │ ├── C-Z6.3+poreleaseonce+poonceonce+poacquireacquire.litmus │ ├── C-Z6.3+poreleaseonce+poonceonce+poacquireonce.litmus │ ├── C-Z6.3+poreleaseonce+poonceonce+poonceacquire.litmus │ ├── C-Z6.3+poreleaseonce+poonceonce+poonceonce.litmus │ ├── C-Z6.3+poreleaseonce+pooncerelease+fencembonceonce.litmus │ ├── C-Z6.3+poreleaseonce+pooncerelease+poacquireacquire.litmus │ ├── C-Z6.3+poreleaseonce+pooncerelease+poacquireonce.litmus │ ├── C-Z6.3+poreleaseonce+pooncerelease+poonceacquire.litmus │ ├── C-Z6.3+poreleaseonce+pooncerelease+poonceonce.litmus │ ├── C-Z6.3+poreleaseonce+poreleaseonce+fencembonceonce.litmus │ ├── C-Z6.3+poreleaseonce+poreleaseonce+poacquireacquire.litmus │ ├── C-Z6.3+poreleaseonce+poreleaseonce+poacquireonce.litmus │ ├── C-Z6.3+poreleaseonce+poreleaseonce+poonceacquire.litmus │ ├── C-Z6.3+poreleaseonce+poreleaseonce+poonceonce.litmus │ ├── C-Z6.3+poreleaseonce+poreleaserelease+fencembonceonce.litmus │ ├── C-Z6.3+poreleaseonce+poreleaserelease+poacquireacquire.litmus │ ├── C-Z6.3+poreleaseonce+poreleaserelease+poacquireonce.litmus │ ├── C-Z6.3+poreleaseonce+poreleaserelease+poonceacquire.litmus │ ├── C-Z6.3+poreleaseonce+poreleaserelease+poonceonce.litmus │ ├── C-Z6.3+poreleaserelease+fencembonceonce+fencembonceonce.litmus │ ├── C-Z6.3+poreleaserelease+fencembonceonce+poacquireacquire.litmus │ ├── C-Z6.3+poreleaserelease+fencembonceonce+poacquireonce.litmus │ ├── C-Z6.3+poreleaserelease+fencembonceonce+poonceacquire.litmus │ ├── C-Z6.3+poreleaserelease+fencembonceonce+poonceonce.litmus │ ├── C-Z6.3+poreleaserelease+poonceonce+fencembonceonce.litmus │ ├── C-Z6.3+poreleaserelease+poonceonce+poacquireacquire.litmus │ ├── C-Z6.3+poreleaserelease+poonceonce+poacquireonce.litmus │ ├── C-Z6.3+poreleaserelease+poonceonce+poonceacquire.litmus │ ├── C-Z6.3+poreleaserelease+poonceonce+poonceonce.litmus │ ├── C-Z6.3+poreleaserelease+pooncerelease+fencembonceonce.litmus │ ├── C-Z6.3+poreleaserelease+pooncerelease+poacquireacquire.litmus │ ├── C-Z6.3+poreleaserelease+pooncerelease+poacquireonce.litmus │ ├── C-Z6.3+poreleaserelease+pooncerelease+poonceacquire.litmus │ ├── C-Z6.3+poreleaserelease+pooncerelease+poonceonce.litmus │ ├── C-Z6.3+poreleaserelease+poreleaseonce+fencembonceonce.litmus │ ├── C-Z6.3+poreleaserelease+poreleaseonce+poacquireacquire.litmus │ ├── C-Z6.3+poreleaserelease+poreleaseonce+poacquireonce.litmus │ ├── C-Z6.3+poreleaserelease+poreleaseonce+poonceacquire.litmus │ ├── C-Z6.3+poreleaserelease+poreleaseonce+poonceonce.litmus │ ├── C-Z6.3+poreleaserelease+poreleaserelease+fencembonceonce.litmus │ ├── C-Z6.3+poreleaserelease+poreleaserelease+poacquireacquire.litmus │ ├── C-Z6.3+poreleaserelease+poreleaserelease+poacquireonce.litmus │ ├── C-Z6.3+poreleaserelease+poreleaserelease+poonceacquire.litmus │ ├── C-Z6.3+poreleaserelease+poreleaserelease+poonceonce.litmus │ ├── C-Z6.4+fencembonceonce+fencembonceonce+poonceacquire.litmus │ ├── C-Z6.4+fencembonceonce+fencembonceonce+poreleaseacquire.litmus │ ├── C-Z6.4+fencembonceonce+fencembonceonce+poreleaseonce.litmus │ ├── C-Z6.4+fencembonceonce+poonceacquire+fencembonceonce.litmus │ ├── C-Z6.4+fencembonceonce+poonceacquire+poonceacquire.litmus │ ├── C-Z6.4+fencembonceonce+poonceacquire+poonceonce.litmus │ ├── C-Z6.4+fencembonceonce+poonceacquire+poreleaseacquire.litmus │ ├── C-Z6.4+fencembonceonce+poonceacquire+poreleaseonce.litmus │ ├── C-Z6.4+fencembonceonce+poonceonce+poonceacquire.litmus │ ├── C-Z6.4+fencembonceonce+poonceonce+poreleaseacquire.litmus │ ├── C-Z6.4+fencembonceonce+poonceonce+poreleaseonce.litmus │ ├── C-Z6.4+fencembonceonce+poreleaseacquire+fencembonceonce.litmus │ ├── C-Z6.4+fencembonceonce+poreleaseacquire+poonceacquire.litmus │ ├── C-Z6.4+fencembonceonce+poreleaseacquire+poonceonce.litmus │ ├── C-Z6.4+fencembonceonce+poreleaseacquire+poreleaseacquire.litmus │ ├── C-Z6.4+fencembonceonce+poreleaseacquire+poreleaseonce.litmus │ ├── C-Z6.4+fencembonceonce+poreleaseonce+fencembonceonce.litmus │ ├── C-Z6.4+fencembonceonce+poreleaseonce+poonceacquire.litmus │ ├── C-Z6.4+fencembonceonce+poreleaseonce+poonceonce.litmus │ ├── C-Z6.4+fencembonceonce+poreleaseonce+poreleaseacquire.litmus │ ├── C-Z6.4+fencembonceonce+poreleaseonce+poreleaseonce.litmus │ ├── C-Z6.4+poonceonce+fencembonceonce+poonceacquire.litmus │ ├── C-Z6.4+poonceonce+fencembonceonce+poreleaseacquire.litmus │ ├── C-Z6.4+poonceonce+fencembonceonce+poreleaseonce.litmus │ ├── C-Z6.4+poonceonce+poonceacquire+fencembonceonce.litmus │ ├── C-Z6.4+poonceonce+poonceacquire+poonceacquire.litmus │ ├── C-Z6.4+poonceonce+poonceacquire+poonceonce.litmus │ ├── C-Z6.4+poonceonce+poonceacquire+poreleaseacquire.litmus │ ├── C-Z6.4+poonceonce+poonceacquire+poreleaseonce.litmus │ ├── C-Z6.4+poonceonce+poonceonce+poonceacquire.litmus │ ├── C-Z6.4+poonceonce+poonceonce+poreleaseacquire.litmus │ ├── C-Z6.4+poonceonce+poonceonce+poreleaseonce.litmus │ ├── C-Z6.4+poonceonce+poreleaseacquire+fencembonceonce.litmus │ ├── C-Z6.4+poonceonce+poreleaseacquire+poonceacquire.litmus │ ├── C-Z6.4+poonceonce+poreleaseacquire+poonceonce.litmus │ ├── C-Z6.4+poonceonce+poreleaseacquire+poreleaseacquire.litmus │ ├── C-Z6.4+poonceonce+poreleaseacquire+poreleaseonce.litmus │ ├── C-Z6.4+poonceonce+poreleaseonce+fencembonceonce.litmus │ ├── C-Z6.4+poonceonce+poreleaseonce+poonceacquire.litmus │ ├── C-Z6.4+poonceonce+poreleaseonce+poonceonce.litmus │ ├── C-Z6.4+poonceonce+poreleaseonce+poreleaseacquire.litmus │ ├── C-Z6.4+poonceonce+poreleaseonce+poreleaseonce.litmus │ ├── C-Z6.4+pooncerelease+fencembonceonce+fencembonceonce.litmus │ ├── C-Z6.4+pooncerelease+fencembonceonce+poonceacquire.litmus │ ├── C-Z6.4+pooncerelease+fencembonceonce+poonceonce.litmus │ ├── C-Z6.4+pooncerelease+fencembonceonce+poreleaseacquire.litmus │ ├── C-Z6.4+pooncerelease+fencembonceonce+poreleaseonce.litmus │ ├── C-Z6.4+pooncerelease+poonceacquire+fencembonceonce.litmus │ ├── C-Z6.4+pooncerelease+poonceacquire+poonceacquire.litmus │ ├── C-Z6.4+pooncerelease+poonceacquire+poonceonce.litmus │ ├── C-Z6.4+pooncerelease+poonceacquire+poreleaseacquire.litmus │ ├── C-Z6.4+pooncerelease+poonceacquire+poreleaseonce.litmus │ ├── C-Z6.4+pooncerelease+poonceonce+fencembonceonce.litmus │ ├── C-Z6.4+pooncerelease+poonceonce+poonceacquire.litmus │ ├── C-Z6.4+pooncerelease+poonceonce+poonceonce.litmus │ ├── C-Z6.4+pooncerelease+poonceonce+poreleaseacquire.litmus │ ├── C-Z6.4+pooncerelease+poonceonce+poreleaseonce.litmus │ ├── C-Z6.4+pooncerelease+poreleaseacquire+fencembonceonce.litmus │ ├── C-Z6.4+pooncerelease+poreleaseacquire+poonceacquire.litmus │ ├── C-Z6.4+pooncerelease+poreleaseacquire+poonceonce.litmus │ ├── C-Z6.4+pooncerelease+poreleaseacquire+poreleaseacquire.litmus │ ├── C-Z6.4+pooncerelease+poreleaseacquire+poreleaseonce.litmus │ ├── C-Z6.4+pooncerelease+poreleaseonce+fencembonceonce.litmus │ ├── C-Z6.4+pooncerelease+poreleaseonce+poonceacquire.litmus │ ├── C-Z6.4+pooncerelease+poreleaseonce+poonceonce.litmus │ ├── C-Z6.4+pooncerelease+poreleaseonce+poreleaseacquire.litmus │ ├── C-Z6.4+pooncerelease+poreleaseonce+poreleaseonce.litmus │ ├── C-Z6.4+poreleaseonce+fencembonceonce+fencembonceonce.litmus │ ├── C-Z6.4+poreleaseonce+fencembonceonce+poonceacquire.litmus │ ├── C-Z6.4+poreleaseonce+fencembonceonce+poonceonce.litmus │ ├── C-Z6.4+poreleaseonce+fencembonceonce+poreleaseacquire.litmus │ ├── C-Z6.4+poreleaseonce+fencembonceonce+poreleaseonce.litmus │ ├── C-Z6.4+poreleaseonce+poonceacquire+fencembonceonce.litmus │ ├── C-Z6.4+poreleaseonce+poonceacquire+poonceacquire.litmus │ ├── C-Z6.4+poreleaseonce+poonceacquire+poonceonce.litmus │ ├── C-Z6.4+poreleaseonce+poonceacquire+poreleaseacquire.litmus │ ├── C-Z6.4+poreleaseonce+poonceacquire+poreleaseonce.litmus │ ├── C-Z6.4+poreleaseonce+poonceonce+fencembonceonce.litmus │ ├── C-Z6.4+poreleaseonce+poonceonce+poonceacquire.litmus │ ├── C-Z6.4+poreleaseonce+poonceonce+poonceonce.litmus │ ├── C-Z6.4+poreleaseonce+poonceonce+poreleaseacquire.litmus │ ├── C-Z6.4+poreleaseonce+poonceonce+poreleaseonce.litmus │ ├── C-Z6.4+poreleaseonce+poreleaseacquire+fencembonceonce.litmus │ ├── C-Z6.4+poreleaseonce+poreleaseacquire+poonceacquire.litmus │ ├── C-Z6.4+poreleaseonce+poreleaseacquire+poonceonce.litmus │ ├── C-Z6.4+poreleaseonce+poreleaseacquire+poreleaseacquire.litmus │ ├── C-Z6.4+poreleaseonce+poreleaseacquire+poreleaseonce.litmus │ ├── C-Z6.4+poreleaseonce+poreleaseonce+fencembonceonce.litmus │ ├── C-Z6.4+poreleaseonce+poreleaseonce+poonceacquire.litmus │ ├── C-Z6.4+poreleaseonce+poreleaseonce+poonceonce.litmus │ ├── C-Z6.4+poreleaseonce+poreleaseonce+poreleaseacquire.litmus │ ├── C-Z6.4+poreleaseonces.litmus │ ├── C-Z6.4+poreleaserelease+fencembonceonce+fencembonceonce.litmus │ ├── C-Z6.4+poreleaserelease+fencembonceonce+poonceacquire.litmus │ ├── C-Z6.4+poreleaserelease+fencembonceonce+poonceonce.litmus │ ├── C-Z6.4+poreleaserelease+fencembonceonce+poreleaseacquire.litmus │ ├── C-Z6.4+poreleaserelease+fencembonceonce+poreleaseonce.litmus │ ├── C-Z6.4+poreleaserelease+poonceacquire+fencembonceonce.litmus │ ├── C-Z6.4+poreleaserelease+poonceacquire+poonceacquire.litmus │ ├── C-Z6.4+poreleaserelease+poonceacquire+poonceonce.litmus │ ├── C-Z6.4+poreleaserelease+poonceacquire+poreleaseacquire.litmus │ ├── C-Z6.4+poreleaserelease+poonceacquire+poreleaseonce.litmus │ ├── C-Z6.4+poreleaserelease+poonceonce+fencembonceonce.litmus │ ├── C-Z6.4+poreleaserelease+poonceonce+poonceacquire.litmus │ ├── C-Z6.4+poreleaserelease+poonceonce+poonceonce.litmus │ ├── C-Z6.4+poreleaserelease+poonceonce+poreleaseacquire.litmus │ ├── C-Z6.4+poreleaserelease+poonceonce+poreleaseonce.litmus │ ├── C-Z6.4+poreleaserelease+poreleaseacquire+fencembonceonce.litmus │ ├── C-Z6.4+poreleaserelease+poreleaseacquire+poonceacquire.litmus │ ├── C-Z6.4+poreleaserelease+poreleaseacquire+poonceonce.litmus │ ├── C-Z6.4+poreleaserelease+poreleaseacquire+poreleaseacquire.litmus │ ├── C-Z6.4+poreleaserelease+poreleaseacquire+poreleaseonce.litmus │ ├── C-Z6.4+poreleaserelease+poreleaseonce+fencembonceonce.litmus │ ├── C-Z6.4+poreleaserelease+poreleaseonce+poonceacquire.litmus │ ├── C-Z6.4+poreleaserelease+poreleaseonce+poonceonce.litmus │ ├── C-Z6.4+poreleaserelease+poreleaseonce+poreleaseacquire.litmus │ ├── C-Z6.4+poreleaserelease+poreleaseonce+poreleaseonce.litmus │ ├── C-Z6.5+fencembonceonce+fencembonceonce+poonceacquire.litmus │ ├── C-Z6.5+fencembonceonce+fencembonceonce+poreleaseacquire.litmus │ ├── C-Z6.5+fencembonceonce+fencembonceonce+poreleaseonce.litmus │ ├── C-Z6.5+fencembonceonce+poonceonce+poonceacquire.litmus │ ├── C-Z6.5+fencembonceonce+poonceonce+poreleaseacquire.litmus │ ├── C-Z6.5+fencembonceonce+poonceonce+poreleaseonce.litmus │ ├── C-Z6.5+fencembonceonce+pooncerelease+fencembonceonce.litmus │ ├── C-Z6.5+fencembonceonce+pooncerelease+poonceacquire.litmus │ ├── C-Z6.5+fencembonceonce+pooncerelease+poonceonce.litmus │ ├── C-Z6.5+fencembonceonce+pooncerelease+poreleaseacquire.litmus │ ├── C-Z6.5+fencembonceonce+pooncerelease+poreleaseonce.litmus │ ├── C-Z6.5+fencembonceonce+poreleaseonce+fencembonceonce.litmus │ ├── C-Z6.5+fencembonceonce+poreleaseonce+poonceacquire.litmus │ ├── C-Z6.5+fencembonceonce+poreleaseonce+poonceonce.litmus │ ├── C-Z6.5+fencembonceonce+poreleaseonce+poreleaseacquire.litmus │ ├── C-Z6.5+fencembonceonce+poreleaseonce+poreleaseonce.litmus │ ├── C-Z6.5+fencembonceonce+poreleaserelease+fencembonceonce.litmus │ ├── C-Z6.5+fencembonceonce+poreleaserelease+poonceacquire.litmus │ ├── C-Z6.5+fencembonceonce+poreleaserelease+poonceonce.litmus │ ├── C-Z6.5+fencembonceonce+poreleaserelease+poreleaseacquire.litmus │ ├── C-Z6.5+fencembonceonce+poreleaserelease+poreleaseonce.litmus │ ├── C-Z6.5+poonceonce+fencembonceonce+poonceacquire.litmus │ ├── C-Z6.5+poonceonce+fencembonceonce+poreleaseacquire.litmus │ ├── C-Z6.5+poonceonce+fencembonceonce+poreleaseonce.litmus │ ├── C-Z6.5+poonceonce+poonceonce+poonceacquire.litmus │ ├── C-Z6.5+poonceonce+poonceonce+poreleaseacquire.litmus │ ├── C-Z6.5+poonceonce+poonceonce+poreleaseonce.litmus │ ├── C-Z6.5+poonceonce+pooncerelease+fencembonceonce.litmus │ ├── C-Z6.5+poonceonce+pooncerelease+poonceacquire.litmus │ ├── C-Z6.5+poonceonce+pooncerelease+poonceonce.litmus │ ├── C-Z6.5+poonceonce+pooncerelease+poreleaseacquire.litmus │ ├── C-Z6.5+poonceonce+pooncerelease+poreleaseonce.litmus │ ├── C-Z6.5+poonceonce+poreleaseonce+fencembonceonce.litmus │ ├── C-Z6.5+poonceonce+poreleaseonce+poonceacquire.litmus │ ├── C-Z6.5+poonceonce+poreleaseonce+poonceonce.litmus │ ├── C-Z6.5+poonceonce+poreleaseonce+poreleaseacquire.litmus │ ├── C-Z6.5+poonceonce+poreleaseonce+poreleaseonce.litmus │ ├── C-Z6.5+poonceonce+poreleaserelease+fencembonceonce.litmus │ ├── C-Z6.5+poonceonce+poreleaserelease+poonceacquire.litmus │ ├── C-Z6.5+poonceonce+poreleaserelease+poonceonce.litmus │ ├── C-Z6.5+poonceonce+poreleaserelease+poreleaseacquire.litmus │ ├── C-Z6.5+poonceonce+poreleaserelease+poreleaseonce.litmus │ ├── C-Z6.5+pooncerelease+fencembonceonce+fencembonceonce.litmus │ ├── C-Z6.5+pooncerelease+fencembonceonce+poonceacquire.litmus │ ├── C-Z6.5+pooncerelease+fencembonceonce+poonceonce.litmus │ ├── C-Z6.5+pooncerelease+fencembonceonce+poreleaseacquire.litmus │ ├── C-Z6.5+pooncerelease+fencembonceonce+poreleaseonce.litmus │ ├── C-Z6.5+pooncerelease+poonceonce+fencembonceonce.litmus │ ├── C-Z6.5+pooncerelease+poonceonce+poonceacquire.litmus │ ├── C-Z6.5+pooncerelease+poonceonce+poonceonce.litmus │ ├── C-Z6.5+pooncerelease+poonceonce+poreleaseacquire.litmus │ ├── C-Z6.5+pooncerelease+poonceonce+poreleaseonce.litmus │ ├── C-Z6.5+pooncerelease+pooncerelease+fencembonceonce.litmus │ ├── C-Z6.5+pooncerelease+pooncerelease+poonceacquire.litmus │ ├── C-Z6.5+pooncerelease+pooncerelease+poonceonce.litmus │ ├── C-Z6.5+pooncerelease+pooncerelease+poreleaseacquire.litmus │ ├── C-Z6.5+pooncerelease+pooncerelease+poreleaseonce.litmus │ ├── C-Z6.5+pooncerelease+poreleaseonce+fencembonceonce.litmus │ ├── C-Z6.5+pooncerelease+poreleaseonce+poonceacquire.litmus │ ├── C-Z6.5+pooncerelease+poreleaseonce+poonceonce.litmus │ ├── C-Z6.5+pooncerelease+poreleaseonce+poreleaseacquire.litmus │ ├── C-Z6.5+pooncerelease+poreleaseonce+poreleaseonce.litmus │ ├── C-Z6.5+pooncerelease+poreleaserelease+fencembonceonce.litmus │ ├── C-Z6.5+pooncerelease+poreleaserelease+poonceacquire.litmus │ ├── C-Z6.5+pooncerelease+poreleaserelease+poonceonce.litmus │ ├── C-Z6.5+pooncerelease+poreleaserelease+poreleaseacquire.litmus │ ├── C-Z6.5+pooncerelease+poreleaserelease+poreleaseonce.litmus │ ├── C-Z6.5+poreleaseonce+fencembonceonce+fencembonceonce.litmus │ ├── C-Z6.5+poreleaseonce+fencembonceonce+poonceacquire.litmus │ ├── C-Z6.5+poreleaseonce+fencembonceonce+poonceonce.litmus │ ├── C-Z6.5+poreleaseonce+fencembonceonce+poreleaseacquire.litmus │ ├── C-Z6.5+poreleaseonce+fencembonceonce+poreleaseonce.litmus │ ├── C-Z6.5+poreleaseonce+poonceonce+fencembonceonce.litmus │ ├── C-Z6.5+poreleaseonce+poonceonce+poonceacquire.litmus │ ├── C-Z6.5+poreleaseonce+poonceonce+poonceonce.litmus │ ├── C-Z6.5+poreleaseonce+poonceonce+poreleaseacquire.litmus │ ├── C-Z6.5+poreleaseonce+poonceonce+poreleaseonce.litmus │ ├── C-Z6.5+poreleaseonce+pooncerelease+fencembonceonce.litmus │ ├── C-Z6.5+poreleaseonce+pooncerelease+poonceacquire.litmus │ ├── C-Z6.5+poreleaseonce+pooncerelease+poonceonce.litmus │ ├── C-Z6.5+poreleaseonce+pooncerelease+poreleaseacquire.litmus │ ├── C-Z6.5+poreleaseonce+pooncerelease+poreleaseonce.litmus │ ├── C-Z6.5+poreleaseonce+poreleaseonce+fencembonceonce.litmus │ ├── C-Z6.5+poreleaseonce+poreleaseonce+poonceacquire.litmus │ ├── C-Z6.5+poreleaseonce+poreleaseonce+poonceonce.litmus │ ├── C-Z6.5+poreleaseonce+poreleaseonce+poreleaseacquire.litmus │ ├── C-Z6.5+poreleaseonce+poreleaserelease+fencembonceonce.litmus │ ├── C-Z6.5+poreleaseonce+poreleaserelease+poonceacquire.litmus │ ├── C-Z6.5+poreleaseonce+poreleaserelease+poonceonce.litmus │ ├── C-Z6.5+poreleaseonce+poreleaserelease+poreleaseacquire.litmus │ ├── C-Z6.5+poreleaseonce+poreleaserelease+poreleaseonce.litmus │ ├── C-Z6.5+poreleaseonces.litmus │ ├── C-Z6.5+poreleaserelease+fencembonceonce+fencembonceonce.litmus │ ├── C-Z6.5+poreleaserelease+fencembonceonce+poonceacquire.litmus │ ├── C-Z6.5+poreleaserelease+fencembonceonce+poonceonce.litmus │ ├── C-Z6.5+poreleaserelease+fencembonceonce+poreleaseacquire.litmus │ ├── C-Z6.5+poreleaserelease+fencembonceonce+poreleaseonce.litmus │ ├── C-Z6.5+poreleaserelease+poonceonce+fencembonceonce.litmus │ ├── C-Z6.5+poreleaserelease+poonceonce+poonceacquire.litmus │ ├── C-Z6.5+poreleaserelease+poonceonce+poonceonce.litmus │ ├── C-Z6.5+poreleaserelease+poonceonce+poreleaseacquire.litmus │ ├── C-Z6.5+poreleaserelease+poonceonce+poreleaseonce.litmus │ ├── C-Z6.5+poreleaserelease+pooncerelease+fencembonceonce.litmus │ ├── C-Z6.5+poreleaserelease+pooncerelease+poonceacquire.litmus │ ├── C-Z6.5+poreleaserelease+pooncerelease+poonceonce.litmus │ ├── C-Z6.5+poreleaserelease+pooncerelease+poreleaseacquire.litmus │ ├── C-Z6.5+poreleaserelease+pooncerelease+poreleaseonce.litmus │ ├── C-Z6.5+poreleaserelease+poreleaseonce+fencembonceonce.litmus │ ├── C-Z6.5+poreleaserelease+poreleaseonce+poonceacquire.litmus │ ├── C-Z6.5+poreleaserelease+poreleaseonce+poonceonce.litmus │ ├── C-Z6.5+poreleaserelease+poreleaseonce+poreleaseacquire.litmus │ ├── C-Z6.5+poreleaserelease+poreleaseonce+poreleaseonce.litmus │ ├── C-Z6.5+poreleaserelease+poreleaserelease+fencembonceonce.litmus │ ├── C-Z6.5+poreleaserelease+poreleaserelease+poonceacquire.litmus │ ├── C-Z6.5+poreleaserelease+poreleaserelease+poonceonce.litmus │ ├── C-Z6.5+poreleaserelease+poreleaserelease+poreleaseacquire.litmus │ ├── C-Z6.5+poreleaserelease+poreleaserelease+poreleaseonce.litmus │ ├── X.conf │ ├── k.txt │ ├── kallow.txt │ └── kforbid.txt └── WeakFence │ ├── @all │ ├── @three │ ├── @two │ ├── C-2+2w+fencewmbonceonces.litmus │ ├── C-2+2w+wmbs+OBS.litmus │ ├── C-3.2w+fencewmbonceonces.litmus │ ├── C-iriw+fencermbonceonces+OnceOnce.litmus │ ├── C-irrwiw+fencermbonceonce+fencembonceonce+OnceOnce.litmus │ ├── C-isa2+fencewmbonceonce+fencembonceonce+fencermbonceonce.litmus │ ├── C-mp+fencewmbonceonce+fencermbonceonce.litmus │ ├── C-r+fencewmbonceonce+fencembonceonce.litmus │ ├── C-rwc+fencermbonceonce+fencembonceonce+Once.litmus │ ├── C-s+fencewmbonceonce+fencembonceonce.litmus │ ├── C-w+rwc+fencewmbonceonce+fencermbonceonce+fencembonceonce.litmus │ ├── C-wrc+fencembonceonce+fencermbonceonce+Once.litmus │ ├── C-wrr+2w+fencermbonceonce+fencewmbonceonce+Once.litmus │ ├── C-wrw+2w+fencembonceonce+fencewmbonceonce+Once.litmus │ ├── C-z6.0+fencewmbonceonce+fencembonceonce+fencembonceonce.litmus │ ├── C-z6.1+fencewmbonceonce+fencewmbonceonce+fencembonceonce.litmus │ ├── C-z6.2+fencewmbonceonce+fencembonceonce+fencembonceonce.litmus │ ├── C-z6.3+fencewmbonceonce+fencewmbonceonce+fencermbonceonce.litmus │ ├── C-z6.4+fencewmbonceonce+fencembonceonce+fencembonceonce.litmus │ ├── C-z6.5+fencewmbonceonce+fencewmbonceonce+fencembonceonce.litmus │ ├── X.conf │ └── k.txt ├── manual ├── absperf │ ├── C-SB+l-o-o-u+l-o-o-u+l-o-o-u+l-o-o-u+l-o-o-u-C.litmus │ ├── C-SB+l-o-o-u+l-o-o-u+l-o-o-u+l-o-o-u+l-o-o-u-CE.litmus │ ├── C-SB+l-o-o-u+l-o-o-u+l-o-o-u+l-o-o-u+l-o-o-u-X.litmus │ ├── C-SB+l-o-o-u+l-o-o-u+l-o-o-u+l-o-o-u+l-o-o-u-XE.litmus │ ├── C-SB+l-o-o-u+l-o-o-u+l-o-o-u+l-o-o-u+l-o-o-u.litmus │ ├── C-SB+l-o-o-u+l-o-o-u+l-o-o-u+l-o-o-u-C.litmus │ ├── C-SB+l-o-o-u+l-o-o-u+l-o-o-u+l-o-o-u-CE.litmus │ ├── C-SB+l-o-o-u+l-o-o-u+l-o-o-u+l-o-o-u-X.litmus │ ├── C-SB+l-o-o-u+l-o-o-u+l-o-o-u+l-o-o-u-XE.litmus │ ├── C-SB+l-o-o-u+l-o-o-u+l-o-o-u+l-o-o-u.litmus │ ├── C-SB+l-o-o-u+l-o-o-u+l-o-o-u-C.litmus │ ├── C-SB+l-o-o-u+l-o-o-u+l-o-o-u-CE.litmus │ ├── C-SB+l-o-o-u+l-o-o-u+l-o-o-u-X.litmus │ ├── C-SB+l-o-o-u+l-o-o-u+l-o-o-u-XE.litmus │ ├── C-SB+l-o-o-u+l-o-o-u+l-o-o-u.litmus │ ├── C-SB+l-o-o-u+l-o-o-u-C.litmus │ ├── C-SB+l-o-o-u+l-o-o-u-CE.litmus │ ├── C-SB+l-o-o-u+l-o-o-u-X.litmus │ ├── C-SB+l-o-o-u+l-o-o-u-XE.litmus │ └── C-SB+l-o-o-u+l-o-o-u.litmus ├── atomic │ ├── C-AlanStern-Atomic1.litmus │ ├── C-PaulEMcKenney-SB+adat-o+adat-o.litmus │ ├── C-atomic-00.litmus │ ├── C-atomic-01.litmus │ ├── C-atomic-02.litmus │ ├── C-atomic-03.litmus │ ├── C-atomic-04.litmus │ ├── C-atomic-add-unless-mb.litmus │ ├── C-lock-write1.litmus │ ├── C-lock-write2.litmus │ ├── C-lock2.litmus │ ├── C-noatomic-03.litmus │ ├── C-trylock2.litmus │ ├── C-unlock-wait-00.litmus │ ├── C-unlock-wait-01.litmus │ └── C-xchg-lock-write1.litmus ├── demo │ ├── C-2+2W+o-wmb-o+o-wmb-o.litmus │ ├── C-3+2W+o-wmb-o+o-wmb-o+o-wmb-o.litmus │ ├── C-3.SB+o-mb-o+o-mb-o+o-mb-o.litmus │ ├── C-3.SB+o-o+o-mb-o+o-mb-o.litmus │ ├── C-CO+o-o+o-o.litmus │ ├── C-CO+o-o.litmus │ ├── C-FR+w+w+w+reads.litmus │ ├── C-Figure8.litmus │ ├── C-IRIW+o+o+o-mb-o+o-mb-o.litmus │ ├── C-IRIW+rel+rel+acq-o+acq-o.litmus │ ├── C-IRIWish+o+o-rel+o-rmb-o+o-rmb-o.litmus │ ├── C-ISA2+o-rel+acq-rel+acq-o.litmus │ ├── C-ISA2-6+o-sync-o+o-sync-o+o-sync-o+rl-o-o-rul+rl-o-o-rul+rl-o-o-rul.litmus │ ├── C-LB+acq-o+acq-o+acq-o.litmus │ ├── C-LB+ldref-o+acq-o+o-dep-o.litmus │ ├── C-LB+ldref-o+o-ctrl-o+o-dep-o.litmus │ ├── C-LB+ldref-o+o-o+o-dep-o.litmus │ ├── C-LB+o-o+o-o+o-o.litmus │ ├── C-LB+o-o+o-o.litmus │ ├── C-LB+o-rel+rl-o-o-rul+o-sync-o.litmus │ ├── C-LB+o-sync-o+rl-o-o-rul+o-rl-rul-o+o-sync-o.litmus │ ├── C-LB+o-sync-o+rl-o-o-rul.litmus │ ├── C-LB+o-sync-sync-o+rl-o-o-rul+rl-o-o-rul.litmus │ ├── C-LB+rl-deref-o-rul+o-sync-o+rl-o-o-rlu.litmus │ ├── C-LB+rl-deref-o-rul+o-sync-o.litmus │ ├── C-MP+o-assign+o-dep-o.litmus │ ├── C-MP+o-mb-o+o-mb-o.litmus │ ├── C-MP+o-o+o-o.litmus │ ├── C-MP+o-rel+acq-o.litmus │ ├── C-MP+o-wmb-o+o-rmb-o.litmus │ ├── C-MP2+o-o-wmb-o-o+o-rmb-o+o-rmb-o.litmus │ ├── C-R+o-wmb-o+o+mb+o.litmus │ ├── C-RR-R+WW-G.litmus │ ├── C-RW-R+RW-G+RW-R.litmus │ ├── C-RW-R+RW-Gr+RW-Ra.litmus │ ├── C-RW-Ra+RW-G+RW-Rr.litmus │ ├── C-SB+o-mb-o+o-mb-o.litmus │ ├── C-W+WRC+o-rel+acq-o+o-mb-o.litmus │ ├── C-WRC-o+o-data-o+o-rmb-o.litmus │ ├── C-WWC+o+acq-o+acq-o.litmus │ ├── C-WWC+o+o-rel+acq-o.litmus │ ├── C-Z6.0+o-mb-o+acq-o+o-mb-o.litmus │ ├── C-Z6.0+o-rel+acq-o+o-mb-o.litmus │ ├── C-atomicpo.litmus │ ├── C-locktest-filter.litmus │ ├── C-locktest.litmus │ ├── C-po-loc.litmus │ ├── C-rcu-relacq1-relacq.litmus │ ├── C-rcu-relacq1.litmus │ ├── C-release-B-cumulative-only-on-acquire-path.litmus │ ├── C-release-acquire-is-B-cumulative.litmus │ ├── C-release-is-A-cumulative.litmus │ ├── C-release-is-not-B-cumulative.litmus │ ├── C-relseq-not-B-cumulative.litmus │ ├── C-relseq.litmus │ ├── C-wmb-is-B-cumulative.litmus │ ├── C-wmb-is-not-A-cumulative.litmus │ ├── PPC-DCL.litmus │ ├── PPC-LB+addrs-po.litmus │ ├── PPC-MP+lwsync+addr-po.litmus │ ├── PPC-MP+lwsync+addr.litmus │ ├── PPC-MP+lwsync+ctrl.litmus │ └── alpha-split-cache-example1.litmus ├── deps │ ├── LB-addr-equals.litmus │ ├── LB-addr-not-equals.litmus │ ├── LB-ctls-bothvals-a.litmus │ ├── LB-ctls-bothvals.litmus │ ├── LB-ctls-diffvals-det.litmus │ ├── LB-ctls-diffvals-postif.litmus │ ├── LB-ctls-diffvals.litmus │ ├── LB-ctls-sameval-barrier.litmus │ └── LB-ctls-sameval.litmus ├── extra │ ├── .gitignore │ ├── 3.lb+o-addr-rb_dep-o+o-addr-rb_dep-o+o-addr-rb_dep-o.litmus │ ├── 3.lb+o-mb-o+o-mb-o+o-addr-rb_dep-o.litmus │ ├── 3.lb+o-mb-o+o-mb-o+o-rb_dep-addr-o.litmus │ ├── C-3.lb+acq-o+acq-o.litmus │ ├── C-3.lb+acq-rel+acq-rel.litmus │ ├── C-3.lb+deref-addr-assign+deref-addr-assign.litmus │ ├── C-3.lb+o-assign+deref-addr-o.litmus │ ├── C-3.lb+o-branch-o+o-branch-o.litmus │ ├── C-3.lb+o-mb-o+o-mb-o+ctrl-branch-o.litmus │ ├── C-3.lb+o-mb-o+o-mb-o+o-addr-o.litmus │ ├── C-3.lb+o-mb-o+o-mb-o+o-branch-o.litmus │ ├── C-3.lb+o-mb-o+o-mb-o.litmus │ ├── C-3.lb+o-o+o-o.litmus │ ├── C-3.lb+o-rel+acq-rel+acq-o.litmus │ ├── C-3.lb+once-rel+acq-rel+acq-once.litmus │ ├── C-LB+dataonceonce+dataonceonce-rfionceonce-frionceonce-wsionceonce.litmus │ ├── C-LB+dataonceonce+dataonceonce-rfionceonce-frionceonce.litmus │ ├── C-LB+dataonceonce+dataonceonce-wsionceonce-rfionceonce-frionceonce.litmus │ ├── C-LB+dataonceonce+dataonceonce-wsionceonce.litmus │ ├── C-LB+dataonceonce+dataoncerelease-wsireleaseonce-rfionceonce-frionceonce.litmus │ ├── C-LB+dataonceonce+dataoncerelease-wsireleaseonce.litmus │ ├── C-MP+fencewmbonceonce+addronceonce-[fronceonce-rf]onceonce.litmus │ ├── C-S+fencembonceonce+dataonceonce-rfionceonce-frionceonce-wsionceonce.litmus │ ├── C-S+fencembonceonce+dataonceonce-rfionceonce-frionceonce.litmus │ ├── C-S+fencembonceonce+dataonceonce-wsionceonce-rfionceonce-frionceonce.litmus │ ├── C-S+fencembonceonce+dataonceonce-wsionceonce.litmus │ ├── C-S+fencembonceonce+dataoncerelease-wsireleaseonce-rfionceonce-frionceonce.litmus │ ├── C-S+fencembonceonce+dataoncerelease-wsireleaseonce.litmus │ ├── C-Weak-RCU-Readers-With-Grace.litmus │ ├── C-Weak-RCU-Readers-With-More-Grace.litmus │ ├── C-Weak-RCU-Readers.litmus │ ├── C-alt-ww-rw+rel+acq-o+o-rel+acq-o+o-wb-rel+acq-o.litmus │ ├── C-alt-ww-rw+rel+acq-rel+acq-o+o-wb-rel+acq-o+o-wb-o.litmus │ ├── C-dist-2+2w+o-o+o-o.litmus │ ├── C-dist-2+2w+rel+acq-o+o-rel.litmus │ ├── C-dist-2+2w+rel+acq-o+o-wmb-o.litmus │ ├── C-isa2+o-assign+deref-addr-o+o-rb-o.litmus │ ├── C-isa2+o-assign+deref-o+o-rb-o.litmus │ ├── C-isa2+o-o+o-o+o-o.litmus │ ├── C-isa2+o-rel+acq-assign+deref-addr-o.litmus │ ├── C-isa2+o-rel+acq-o+o-rb-o.litmus │ ├── C-isa2+o-rel+acq-rel+acq-o.litmus │ ├── C-isa2+o-wb-o+o-mb-o+o-rb-o.litmus │ ├── C-lb+acq-o+acq-o.litmus │ ├── C-lb+ctrl-branch-o+ctrl-branch-o.litmus │ ├── C-lb+deref-addr-assign+deref-addr-assign.litmus │ ├── C-lb+deref-addr-o+deref-addr-o.litmus │ ├── C-lb+deref-assign+deref-assign.litmus │ ├── C-lb+deref-o+deref-o.litmus │ ├── C-lb+o-assign+deref-addr-o.litmus │ ├── C-lb+o-assign+deref-o.litmus │ ├── C-lb+o-assign+o-assign.litmus │ ├── C-lb+o-branch-o+o-branch-o.litmus │ ├── C-lb+o-mb-o+o-mb-o.litmus │ ├── C-lb+o-o+o-o.litmus │ ├── C-lb+o-rel+acq-o.litmus │ ├── C-lb+o-rel+o-rel.litmus │ ├── C-lb+rel-acq+rel-acq.litmus │ ├── C-less-super-dist-2+2w+rel+acq-assign+deref-addr-o+o-wmb-o+o-wmb-o.litmus │ ├── C-less-super-dist-2+2w+rel+acq-rel+acq-o+o-wmb-o+o-wmb-o.litmus │ ├── C-mp+o-assign+deref-addr-o.litmus │ ├── C-mp+o-assign+deref-o.litmus │ ├── C-mp+o-mb-o+o-addr-o.litmus │ ├── C-mp+o-rel+acq-o.litmus │ ├── C-mp+o-rel+deref-addr-o.litmus │ ├── C-say-captain.litmus │ ├── C-say-wot.litmus │ ├── C-sb+o-o+o-o.litmus │ ├── C-sb+rel-acq+rel-acq.litmus │ ├── C-sb+rel-o+rel-o.litmus │ ├── C-super-dist-2+2w+rel+acq-assign+deref-addr-o+o-wmb-o+o-wmb-o.litmus │ ├── C-super-dist-2+2w+rel+acq-rel+acq-o+o-wmb-o+o-wmb-o.litmus │ ├── C-wrc+assign+deref-addr-assign+o-rb-o.litmus │ ├── C-wrc+assign+deref-addr-o+o-rb-o.litmus │ ├── C-wrc+assign+deref-assign+deref-o.litmus │ ├── C-wrc+assign+deref-o+o-rb-o.litmus │ ├── C-wrc+o+o-assign+deref-addr-o.litmus │ ├── C-wrc+o+o-o+o-o.litmus │ ├── C-wrc+o+o-rel+acq-o.litmus │ ├── C-wrc+o-mb-o+o-mb-o2.litmus │ ├── C-wrc+o-mb-o+o-rb-o.litmus │ ├── C-wrc+o-mb-o+o-rb-o2.litmus │ ├── C-wrc+rel+acq-o+o-rb-o.litmus │ ├── C-wrc+rel+acq-rel+acq-o.litmus │ ├── C-wrc+rel+acq-rel+acq-rel.litmus │ ├── README │ ├── armv8 │ │ ├── 3.LB+frilderefonce+datalderefonce+datalderefonce.litmus │ │ ├── MP+fencembonceonce+[frlderefonce-fencewmbonceonce-rf]oncelderef-addrldereflderef.litmus │ │ ├── MP+fencembonceonce+[frlderefonce-rf]oncelderef-addrldereflderef-addrlderefonce-rfioncelderef-addrldereflderef.litmus │ │ ├── MP+fencembonceonce+[frlderefonce-rf]oncelderef-addrldereflderef-addrlderefonce-rfioncelderef-posldereflderef.litmus │ │ ├── MP+fencembonceonce+[frlderefonce-rf]oncelderef-addrldereflderef-addrlderefonce-rfioncelderef.litmus │ │ ├── MP+fencembonceonce+[frlderefonce-rf]oncelderef-addrldereflderef-ctrlldereflderef-addrlderefonce-rfioncelderef.litmus │ │ ├── MP+fencembonceonce+[frlderefonce-rf]oncelderef-addrldereflderef-ctrlldereflderef-ctrllderefonce-rfioncelderef.litmus │ │ ├── MP+fencembonceonce+[frlderefonce-rf]oncelderef-addrldereflderef-ctrlldereflderef-datalderefonce-rfioncelderef.litmus │ │ ├── MP+fencembonceonce+[frlderefonce-rf]oncelderef-addrldereflderef-ctrlldereflderef-frilderefonce-rfioncelderef.litmus │ │ ├── MP+fencembonceonce+[frlderefonce-rf]oncelderef-addrldereflderef-ctrllderefonce-rfioncelderef-posldereflderef.litmus │ │ ├── MP+fencembonceonce+[frlderefonce-rf]oncelderef-addrldereflderef-ctrllderefonce-rfioncelderef.litmus │ │ ├── MP+fencembonceonce+[frlderefonce-rf]oncelderef-addrldereflderef-datalderefonce-rfioncelderef-addrldereflderef.litmus │ │ ├── MP+fencembonceonce+[frlderefonce-rf]oncelderef-addrldereflderef-datalderefonce-rfioncelderef-posldereflderef.litmus │ │ ├── MP+fencembonceonce+[frlderefonce-rf]oncelderef-addrldereflderef-datalderefonce-rfioncelderef.litmus │ │ ├── MP+fencembonceonce+[frlderefonce-rf]oncelderef-addrldereflderef-frilderefonce-rfioncelderef-posldereflderef.litmus │ │ ├── MP+fencembonceonce+[frlderefonce-rf]oncelderef-addrldereflderef-frilderefonce-rfioncelderef.litmus │ │ ├── MP+fencembonceonce+[frlderefonce-rf]oncelderef-addrldereflderef-posldereflderef-addrlderefonce-rfioncelderef.litmus │ │ ├── MP+fencembonceonce+[frlderefonce-rf]oncelderef-addrldereflderef-posldereflderef-ctrllderefonce-rfioncelderef.litmus │ │ ├── MP+fencembonceonce+[frlderefonce-rf]oncelderef-addrldereflderef-posldereflderef-datalderefonce-rfioncelderef.litmus │ │ ├── MP+fencembonceonce+[frlderefonce-rf]oncelderef-addrldereflderef-posldereflderef-frilderefonce-rfioncelderef.litmus │ │ ├── MP+fencembonceonce+[frlderefonce-rf]oncelderef-addrldereflderef-posldereflderef.litmus │ │ ├── MP+fencembonceonce+[frlderefonce-rf]oncelderef-addrldereflderef.litmus │ │ ├── MP+fencembonceonce+[frlderefonce-rf]oncelderef-addrlderefonce-rfioncelderef-addrldereflderef-posldereflderef.litmus │ │ ├── MP+fencembonceonce+[frlderefonce-rf]oncelderef-addrlderefonce-rfioncelderef-addrldereflderef.litmus │ │ ├── MP+fencembonceonce+[frlderefonce-rf]oncelderef-addrlderefonce-rfioncelderef-addrlderefonce-rfioncelderef.litmus │ │ ├── MP+fencembonceonce+[frlderefonce-rf]oncelderef-addrlderefonce-rfioncelderef-ctrllderefonce-rfioncelderef.litmus │ │ ├── MP+fencembonceonce+[frlderefonce-rf]oncelderef-addrlderefonce-rfioncelderef-datalderefonce-rfioncelderef.litmus │ │ ├── MP+fencembonceonce+[frlderefonce-rf]oncelderef-addrlderefonce-rfioncelderef-posldereflderef-addrldereflderef.litmus │ │ ├── MP+fencembonceonce+[frlderefonce-rf]oncelderef-addrlderefonce-rfioncelderef-posldereflderef.litmus │ │ ├── MP+fencembonceonce+[frlderefonce-rf]oncelderef-addrlderefonce-rfioncelderef.litmus │ │ ├── MP+fencembonceonce+[frlderefonce-rf]oncelderef-ctrlldereflderef-addrldereflderef-addrlderefonce-rfioncelderef.litmus │ │ ├── MP+fencembonceonce+[frlderefonce-rf]oncelderef-ctrlldereflderef-addrldereflderef-ctrllderefonce-rfioncelderef.litmus │ │ ├── MP+fencembonceonce+[frlderefonce-rf]oncelderef-ctrlldereflderef-addrldereflderef-datalderefonce-rfioncelderef.litmus │ │ ├── MP+fencembonceonce+[frlderefonce-rf]oncelderef-ctrlldereflderef-addrldereflderef-frilderefonce-rfioncelderef.litmus │ │ ├── MP+fencembonceonce+[frlderefonce-rf]oncelderef-ctrlldereflderef-addrlderefonce-rfioncelderef-posldereflderef.litmus │ │ ├── MP+fencembonceonce+[frlderefonce-rf]oncelderef-ctrlldereflderef-addrlderefonce-rfioncelderef.litmus │ │ ├── MP+fencembonceonce+[frlderefonce-rf]oncelderef-ctrlldereflderef-ctrllderefonce-rfioncelderef-posldereflderef.litmus │ │ ├── MP+fencembonceonce+[frlderefonce-rf]oncelderef-ctrlldereflderef-ctrllderefonce-rfioncelderef.litmus │ │ ├── MP+fencembonceonce+[frlderefonce-rf]oncelderef-ctrlldereflderef-datalderefonce-rfioncelderef-posldereflderef.litmus │ │ ├── MP+fencembonceonce+[frlderefonce-rf]oncelderef-ctrlldereflderef-datalderefonce-rfioncelderef.litmus │ │ ├── MP+fencembonceonce+[frlderefonce-rf]oncelderef-ctrlldereflderef-frilderefonce-rfioncelderef-posldereflderef.litmus │ │ ├── MP+fencembonceonce+[frlderefonce-rf]oncelderef-ctrlldereflderef-frilderefonce-rfioncelderef.litmus │ │ ├── MP+fencembonceonce+[frlderefonce-rf]oncelderef-ctrlldereflderef-posldereflderef-addrlderefonce-rfioncelderef.litmus │ │ ├── MP+fencembonceonce+[frlderefonce-rf]oncelderef-ctrlldereflderef-posldereflderef-ctrllderefonce-rfioncelderef.litmus │ │ ├── MP+fencembonceonce+[frlderefonce-rf]oncelderef-ctrlldereflderef-posldereflderef-datalderefonce-rfioncelderef.litmus │ │ ├── MP+fencembonceonce+[frlderefonce-rf]oncelderef-ctrlldereflderef-posldereflderef-frilderefonce-rfioncelderef.litmus │ │ ├── MP+fencembonceonce+[frlderefonce-rf]oncelderef-ctrllderefonce-rfioncelderef-addrlderefonce-rfioncelderef.litmus │ │ ├── MP+fencembonceonce+[frlderefonce-rf]oncelderef-ctrllderefonce-rfioncelderef-ctrllderefonce-rfioncelderef.litmus │ │ ├── MP+fencembonceonce+[frlderefonce-rf]oncelderef-ctrllderefonce-rfioncelderef-datalderefonce-rfioncelderef.litmus │ │ ├── MP+fencembonceonce+[frlderefonce-rf]oncelderef-ctrllderefonce-rfioncelderef-posldereflderef.litmus │ │ ├── MP+fencembonceonce+[frlderefonce-rf]oncelderef-ctrllderefonce-rfioncelderef.litmus │ │ ├── MP+fencembonceonce+[frlderefonce-rf]oncelderef-datalderefonce-rfioncelderef-addrldereflderef-posldereflderef.litmus │ │ ├── MP+fencembonceonce+[frlderefonce-rf]oncelderef-datalderefonce-rfioncelderef-addrldereflderef.litmus │ │ ├── MP+fencembonceonce+[frlderefonce-rf]oncelderef-datalderefonce-rfioncelderef-addrlderefonce-rfioncelderef.litmus │ │ ├── MP+fencembonceonce+[frlderefonce-rf]oncelderef-datalderefonce-rfioncelderef-ctrllderefonce-rfioncelderef.litmus │ │ ├── MP+fencembonceonce+[frlderefonce-rf]oncelderef-datalderefonce-rfioncelderef-datalderefonce-rfioncelderef.litmus │ │ ├── MP+fencembonceonce+[frlderefonce-rf]oncelderef-datalderefonce-rfioncelderef-posldereflderef-addrldereflderef.litmus │ │ ├── MP+fencembonceonce+[frlderefonce-rf]oncelderef-datalderefonce-rfioncelderef-posldereflderef.litmus │ │ ├── MP+fencembonceonce+[frlderefonce-rf]oncelderef-datalderefonce-rfioncelderef.litmus │ │ ├── MP+fencembonceonce+addrldereflderef-[frlderefonce-fencewmbonceonce-rf]oncelderef-addrldereflderef.litmus │ │ ├── MP+fencembonceonce+posldereflderef-[frlderefonce-rf]oncelderef-addrldereflderef-addrlderefonce-rfioncelderef.litmus │ │ ├── MP+fencembonceonce+posldereflderef-[frlderefonce-rf]oncelderef-addrldereflderef-ctrllderefonce-rfioncelderef.litmus │ │ ├── MP+fencembonceonce+posldereflderef-[frlderefonce-rf]oncelderef-addrldereflderef-datalderefonce-rfioncelderef.litmus │ │ ├── MP+fencembonceonce+posldereflderef-[frlderefonce-rf]oncelderef-addrldereflderef-frilderefonce-rfioncelderef.litmus │ │ ├── MP+fencembonceonce+posldereflderef-[frlderefonce-rf]oncelderef-addrldereflderef-posldereflderef.litmus │ │ ├── MP+fencembonceonce+posldereflderef-[frlderefonce-rf]oncelderef-addrldereflderef.litmus │ │ ├── MP+fencembonceonce+posldereflderef-[frlderefonce-rf]oncelderef-addrlderefonce-rfioncelderef-addrldereflderef.litmus │ │ ├── MP+fencembonceonce+posldereflderef-[frlderefonce-rf]oncelderef-addrlderefonce-rfioncelderef-posldereflderef.litmus │ │ ├── MP+fencembonceonce+posldereflderef-[frlderefonce-rf]oncelderef-addrlderefonce-rfioncelderef.litmus │ │ ├── MP+fencembonceonce+posldereflderef-[frlderefonce-rf]oncelderef-ctrlldereflderef-addrlderefonce-rfioncelderef.litmus │ │ ├── MP+fencembonceonce+posldereflderef-[frlderefonce-rf]oncelderef-ctrlldereflderef-ctrllderefonce-rfioncelderef.litmus │ │ ├── MP+fencembonceonce+posldereflderef-[frlderefonce-rf]oncelderef-ctrlldereflderef-datalderefonce-rfioncelderef.litmus │ │ ├── MP+fencembonceonce+posldereflderef-[frlderefonce-rf]oncelderef-ctrlldereflderef-frilderefonce-rfioncelderef.litmus │ │ ├── MP+fencembonceonce+posldereflderef-[frlderefonce-rf]oncelderef-ctrllderefonce-rfioncelderef-posldereflderef.litmus │ │ ├── MP+fencembonceonce+posldereflderef-[frlderefonce-rf]oncelderef-ctrllderefonce-rfioncelderef.litmus │ │ ├── MP+fencembonceonce+posldereflderef-[frlderefonce-rf]oncelderef-datalderefonce-rfioncelderef-addrldereflderef.litmus │ │ ├── MP+fencembonceonce+posldereflderef-[frlderefonce-rf]oncelderef-datalderefonce-rfioncelderef-posldereflderef.litmus │ │ ├── MP+fencembonceonce+posldereflderef-[frlderefonce-rf]oncelderef-datalderefonce-rfioncelderef.litmus │ │ ├── MP+fencembonceonce+posldereflderef-[frlderefonce-rf]oncelderef-posldereflderef-addrldereflderef-posldereflderef.litmus │ │ ├── MP+fencembonceonce+posldereflderef-[frlderefonce-rf]oncelderef-posldereflderef-addrldereflderef.litmus │ │ ├── MP+fencembonceonce+posldereflderef-[frlderefonce-rf]oncelderef-posldereflderef-addrlderefonce-rfioncelderef.litmus │ │ ├── MP+fencembonceonce+posldereflderef-[frlderefonce-rf]oncelderef-posldereflderef-ctrllderefonce-rfioncelderef.litmus │ │ └── MP+fencembonceonce+posldereflderef-[frlderefonce-rf]oncelderef-posldereflderef-datalderefonce-rfioncelderef.litmus │ ├── dist-2+2w+rel+lderef-addr-o+o-wmb-o.litmus │ ├── isa2+o-rel+acq-rel+lderef-o.litmus │ ├── isa2+o-rel+lderef-addr-o+o-rb-o.litmus │ ├── isa2+o-rel+lderef-o+o-rb-o.litmus │ ├── lb+acq-rel+acq-rel.litmus │ ├── lb+deref-addr-o+lderef-addr-o.litmus │ ├── mp+o-o+o-o.litmus │ ├── mp+o-rel+lderef-addr-o.litmus │ ├── mp+o-wb-o+o-data+rb_dep-o.litmus │ ├── mp+o-wb-o+o-rb_dep+data-o.litmus │ ├── rel-seq │ │ ├── C-rel-seq1.litmus │ │ ├── C-rel-seq2.litmus │ │ ├── C-rel-seq3.litmus │ │ └── C-rel-seq4.litmus │ ├── wrc+o+o-rel+lderef-addr-o.litmus │ └── wrc+o-mb-o+o-mb-o.litmus ├── kernel │ ├── C-2+2W+o-r+o-r.litmus │ ├── C-2+2W+o-sync-o+o-sync-o.litmus │ ├── C-2+2W+o-wmb-o+o-wmb-o.litmus │ ├── C-2+2W+rl-o-rul+o-sync-o+rl-o-rul+o-sync-o.litmus │ ├── C-AlanStern-ISA2+wmb+o-r+a-o.litmus │ ├── C-AlanStern-WRC+o-unlock+lock-o.litmus │ ├── C-BoqunFeng-membarrier.litmus │ ├── C-DavidlohrBueso-sem.litmus │ ├── C-ISA2+l-o-o-ul+l-o-o-ul+o-mb-o.litmus │ ├── C-ISA2+o-mb-o+l-o-o-ul+l-o-o-ul.litmus │ ├── C-IngoMolnar-1Cond.litmus │ ├── C-IngoMolnar-2If.litmus │ ├── C-IngoMolnar-2Reads.litmus │ ├── C-IngoMolnar-After.litmus │ ├── C-IngoMolnar.litmus │ ├── C-Jakub-listen.litmus │ ├── C-JanStancek-rwsem.litmus │ ├── C-LB+l-o-o-ul+l-o-o-ul+o-mb-o.litmus │ ├── C-LB+l-o-ul-l-o-ul+o-mb-o.litmus │ ├── C-LB+mb+data.litmus │ ├── C-MP+l-o-ul-l-o-ul+o-mb-o.litmus │ ├── C-MP+o-mb-o+l-o-ul-l-o-ul.litmus │ ├── C-MP-o-A-o+o-A-o.litmus │ ├── C-MPrelseq+o-r+rmwinc+a-o.litmus │ ├── C-ManfredSpraul-L1G1lock.litmus │ ├── C-ManfredSpraul-L1G1locknr.litmus │ ├── C-ManfredSpraul-L1G1xchg.litmus │ ├── C-ManfredSpraul-L1G1xchgnr.litmus │ ├── C-ManfredSpraul-L1G2lock.litmus │ ├── C-ManfredSpraul-L1G2xchg.litmus │ ├── C-ManfredSpraul-Sem.litmus │ ├── C-OlivierGiroux-cppR.litmus │ ├── C-PPO000-019.litmus │ ├── C-PPO000-019rcu.litmus │ ├── C-PPOCA.litmus │ ├── C-PaulEMcKenney-MP+o-a+a-o.litmus │ ├── C-PaulEMcKenney-MP+o-r+a-o.litmus │ ├── C-PaulEMcKenney-MP+o-r+ai-mb-o.litmus │ ├── C-PaulEMcKenney-MP+o-sync-o+o-o.litmus │ ├── C-PaulEMcKenney-S+o-sync-o+o-c-o.litmus │ ├── C-PaulEMcKenney-S+o-sync-o+o-o.litmus │ ├── C-PaulEMcKenney-W+RWC4+2017-10-05.litmus │ ├── C-PaulEMcKenney-psc+sr-mbacq.litmus │ ├── C-PaulEMcKenney-psc+sr-mbonce.litmus │ ├── C-PaulEMcKenney-psc+sr-po.litmus │ ├── C-PaulEMcKenney-psc+sr-relacq.litmus │ ├── C-PaulEMcKenney-psc+sr-relonce.litmus │ ├── C-PaulEMcKenney-psc+sr-sr.litmus │ ├── C-PeterZijlstra+o-r+o-r+a-o-SB.litmus │ ├── C-PeterZijlstra+o-r+o-r+a-o-SB1.litmus │ ├── C-RCU-remove.litmus │ ├── C-READ_ONCE-omitted.litmus │ ├── C-READ_ONCE.litmus │ ├── C-RW-G+RW-C.litmus │ ├── C-RW-R+RR-G+WR-B.litmus │ ├── C-RW-s+RW-D.litmus │ ├── C-RW-sD+RW-sD.litmus │ ├── C-RomanPenyaev-list-rcu-rr-WA.litmus │ ├── C-RomanPenyaev-list-rcu-rr.litmus │ ├── C-SB+l-o-ul-l-o-ul+o-mb-o.litmus │ ├── C-W+MP+o+o-wmb-o+o-rmb-o.litmus │ ├── C-W+WRC+l-o-o-ul+l-o-o-ul+o-mb-o.litmus │ ├── C-WillDeacon-AcqRelStore.litmus │ ├── C-WillDeacon-MP+o-r+ai-rmb-o.litmus │ ├── C-dynticks-from-idle.litmus │ ├── C-dynticks-into-idle.litmus │ ├── C-llist-add-atomic.litmus │ ├── C-piggin-SB+samevar.litmus │ ├── C-seqctr.litmus │ ├── C-seqlock.litmus │ ├── C-srcu-mb-1.litmus │ ├── C-srcu-mb-2.litmus │ ├── C-srcu-mb-3.litmus │ ├── C-srcu-mb-4.litmus │ ├── C-srcu-mb-5.litmus │ ├── C-srcu-nest-1.litmus │ ├── C-srcu-nest-2.litmus │ ├── C-srcu-nest-3.litmus │ ├── C-srcu-nest-4.litmus │ ├── C-srcu-nest-5.litmus │ ├── C-srcu-nest-6.litmus │ ├── C-srcu-nest-7.litmus │ ├── C-srcu-nest-8.litmus │ ├── C-srcu-observed-1.litmus │ ├── C-srcu-observed-2.litmus │ ├── C-srcu-observed-3.litmus │ ├── C-srcu-observed-4.litmus │ ├── C-srcu-observed-5.litmus │ ├── C-srcu-observed-6.litmus │ ├── C-srcue-observed-4.litmus │ ├── C-viro-2020.09.29a.litmus │ ├── C-viro-LB-locks-relacq.litmus │ ├── C-zx2c4-RCU.litmus │ ├── C-zx2c4-atomic.litmus │ ├── LB-release-acquire.litmus │ ├── LB-unlock-lock.litmus │ ├── MP-o-sync-o+rl-o-ctl-o-rul.litmus │ ├── MP-release-acquire.litmus │ ├── MP-unlock-lock.litmus │ ├── README │ ├── SB-release-acquire.litmus │ ├── SB-unlock-lock.litmus │ ├── WRC-release-acquire.litmus │ ├── WRC-unlock-lock.litmus │ ├── after-unlock-lock-same-cpu.litmus │ ├── after-unlock-lock-same-lock-variable.litmus │ └── crypto-control-data.litmus ├── locked │ ├── 2+2W+onces+locked.litmus │ ├── 2+2W+po+rfi-po+onces+locked.litmus │ ├── 2+2W+rfi-pos+onces+locked.litmus │ ├── 3.2W+onces+locked.litmus │ ├── 3.2W+po+rfi-po+po+onces+locked.litmus │ ├── 3.2W+po+rfi-po+rfi-po+onces+locked.litmus │ ├── 3.2W+rfi-pos+onces+locked.litmus │ ├── 3.LB+onces+locked.litmus │ ├── 3.SB+onces+locked.litmus │ ├── 3.SB+po+rfi-po+po+onces+locked.litmus │ ├── 3.SB+po+rfi-po+rfi-po+onces+locked.litmus │ ├── 3.SB+rfi-pos+onces+locked.litmus │ ├── 4.2W+onces+locked.litmus │ ├── 4.2W+po+rfi-po+po+po+onces+locked.litmus │ ├── 4.2W+po+rfi-po+po+rfi-po+onces+locked.litmus │ ├── 4.2W+po+rfi-po+rfi-po+po+onces+locked.litmus │ ├── 4.2W+po+rfi-po+rfi-po+rfi-po+onces+locked.litmus │ ├── 4.2W+rfi-pos+onces+locked.litmus │ ├── 4.LB+onces+locked.litmus │ ├── 4.SB+onces+locked.litmus │ ├── 4.SB+po+rfi-po+po+po+onces+locked.litmus │ ├── 4.SB+po+rfi-po+po+rfi-po+onces+locked.litmus │ ├── 4.SB+po+rfi-po+rfi-po+po+onces+locked.litmus │ ├── 4.SB+po+rfi-po+rfi-po+rfi-po+onces+locked.litmus │ ├── 4.SB+rfi-pos+onces+locked.litmus │ ├── @all │ ├── CoWW+sil-lock-sil-unlock-sil.litmus │ ├── IRIW+onces+locked.litmus │ ├── IRRWIW+onces+locked.litmus │ ├── IRWIW+onces+locked.litmus │ ├── ISA2+onces+locked.litmus │ ├── ISA2+rfi-po+po+po+onces+locked.litmus │ ├── LB+onces+locked.litmus │ ├── MP+onces+locked.litmus │ ├── MP+rfi-po+po+onces+locked.litmus │ ├── R+onces+locked.litmus │ ├── R+po+rfi-po+onces+locked.litmus │ ├── R+rfi-po+po+onces+locked.litmus │ ├── R+rfi-pos+onces+locked.litmus │ ├── README.txt │ ├── RWC+onces+locked.litmus │ ├── RWC+po+rfi-po+onces+locked.litmus │ ├── S+onces+locked.litmus │ ├── S+rfi-po+po+onces+locked.litmus │ ├── SB+onces+locked.litmus │ ├── SB+po+rfi-po+onces+locked.litmus │ ├── SB+rfi-pos+onces+locked.litmus │ ├── SUW+or-ow+l-ow-or.litmus │ ├── SUW+or-ow+la-ow-or.litmus │ ├── W+RR+WR+WR+onces+locked.litmus │ ├── W+RR+WR+WR+po+po+rfi-po+onces+locked.litmus │ ├── W+RR+WR+WR+po+rfi-po+po+onces+locked.litmus │ ├── W+RR+WR+WR+po+rfi-po+rfi-po+onces+locked.litmus │ ├── W+RR+WR+WW+onces+locked.litmus │ ├── W+RR+WR+WW+po+po+rfi-po+onces+locked.litmus │ ├── W+RR+WR+WW+po+rfi-po+po+onces+locked.litmus │ ├── W+RR+WR+WW+po+rfi-po+rfi-po+onces+locked.litmus │ ├── W+RR+WW+RR+onces+locked.litmus │ ├── W+RR+WW+RR+po+rfi-po+po+onces+locked.litmus │ ├── W+RR+WW+RW+onces+locked.litmus │ ├── W+RR+WW+RW+po+rfi-po+po+onces+locked.litmus │ ├── W+RR+WW+WR+onces+locked.litmus │ ├── W+RR+WW+WR+po+po+rfi-po+onces+locked.litmus │ ├── W+RR+WW+WR+po+rfi-po+po+onces+locked.litmus │ ├── W+RR+WW+WR+po+rfi-po+rfi-po+onces+locked.litmus │ ├── W+RR+WW+WW+onces+locked.litmus │ ├── W+RR+WW+WW+po+po+rfi-po+onces+locked.litmus │ ├── W+RR+WW+WW+po+rfi-po+po+onces+locked.litmus │ ├── W+RR+WW+WW+po+rfi-po+rfi-po+onces+locked.litmus │ ├── W+RW+RR+WR+onces+locked.litmus │ ├── W+RW+RR+WR+po+po+rfi-po+onces+locked.litmus │ ├── W+RW+RR+WW+onces+locked.litmus │ ├── W+RW+RR+WW+po+po+rfi-po+onces+locked.litmus │ ├── W+RW+RW+RR+onces+locked.litmus │ ├── W+RW+RW+RW+onces+locked.litmus │ ├── W+RW+RW+WR+onces+locked.litmus │ ├── W+RW+RW+WR+po+po+rfi-po+onces+locked.litmus │ ├── W+RW+RW+WW+onces+locked.litmus │ ├── W+RW+RW+WW+po+po+rfi-po+onces+locked.litmus │ ├── W+RW+WR+WR+onces+locked.litmus │ ├── W+RW+WR+WR+po+po+rfi-po+onces+locked.litmus │ ├── W+RW+WR+WR+po+rfi-po+po+onces+locked.litmus │ ├── W+RW+WR+WR+po+rfi-po+rfi-po+onces+locked.litmus │ ├── W+RW+WR+WW+onces+locked.litmus │ ├── W+RW+WR+WW+po+po+rfi-po+onces+locked.litmus │ ├── W+RW+WR+WW+po+rfi-po+po+onces+locked.litmus │ ├── W+RW+WR+WW+po+rfi-po+rfi-po+onces+locked.litmus │ ├── W+RW+WW+RR+onces+locked.litmus │ ├── W+RW+WW+RR+po+rfi-po+po+onces+locked.litmus │ ├── W+RW+WW+RW+onces+locked.litmus │ ├── W+RW+WW+RW+po+rfi-po+po+onces+locked.litmus │ ├── W+RW+WW+WR+onces+locked.litmus │ ├── W+RW+WW+WR+po+po+rfi-po+onces+locked.litmus │ ├── W+RW+WW+WR+po+rfi-po+po+onces+locked.litmus │ ├── W+RW+WW+WR+po+rfi-po+rfi-po+onces+locked.litmus │ ├── W+RW+WW+WW+onces+locked.litmus │ ├── W+RW+WW+WW+po+po+rfi-po+onces+locked.litmus │ ├── W+RW+WW+WW+po+rfi-po+po+onces+locked.litmus │ ├── W+RW+WW+WW+po+rfi-po+rfi-po+onces+locked.litmus │ ├── W+RWC+onces+locked.litmus │ ├── W+RWC+po+po+rfi-po+onces+locked.litmus │ ├── W+RWC+rfi-po+po+po+onces+locked.litmus │ ├── W+RWC+rfi-po+po+rfi-po+onces+locked.litmus │ ├── WRC+onces+locked.litmus │ ├── WRR+2W+onces+locked.litmus │ ├── WRR+2W+po+rfi-po+onces+locked.litmus │ ├── WRW+2W+onces+locked.litmus │ ├── WRW+2W+po+rfi-po+onces+locked.litmus │ ├── WRW+WR+onces+locked.litmus │ ├── WRW+WR+po+rfi-po+onces+locked.litmus │ ├── WW+RR+WR+WR+onces+locked.litmus │ ├── WW+RR+WR+WR+po+po+po+rfi-po+onces+locked.litmus │ ├── WW+RR+WR+WR+po+po+rfi-po+po+onces+locked.litmus │ ├── WW+RR+WR+WR+po+po+rfi-po+rfi-po+onces+locked.litmus │ ├── WW+RR+WR+WR+rfi-po+po+po+po+onces+locked.litmus │ ├── WW+RR+WR+WR+rfi-po+po+po+rfi-po+onces+locked.litmus │ ├── WW+RR+WR+WR+rfi-po+po+rfi-po+po+onces+locked.litmus │ ├── WW+RR+WR+WR+rfi-po+po+rfi-po+rfi-po+onces+locked.litmus │ ├── WW+RR+WW+RR+onces+locked.litmus │ ├── WW+RR+WW+RR+po+po+rfi-po+po+onces+locked.litmus │ ├── WW+RR+WW+RR+rfi-po+po+rfi-po+po+onces+locked.litmus │ ├── WW+RR+WW+RW+onces+locked.litmus │ ├── WW+RR+WW+RW+po+po+rfi-po+po+onces+locked.litmus │ ├── WW+RR+WW+RW+rfi-po+po+po+po+onces+locked.litmus │ ├── WW+RR+WW+RW+rfi-po+po+rfi-po+po+onces+locked.litmus │ ├── WW+RR+WW+WR+onces+locked.litmus │ ├── WW+RR+WW+WR+po+po+po+rfi-po+onces+locked.litmus │ ├── WW+RR+WW+WR+po+po+rfi-po+po+onces+locked.litmus │ ├── WW+RR+WW+WR+po+po+rfi-po+rfi-po+onces+locked.litmus │ ├── WW+RR+WW+WR+rfi-po+po+po+po+onces+locked.litmus │ ├── WW+RR+WW+WR+rfi-po+po+po+rfi-po+onces+locked.litmus │ ├── WW+RR+WW+WR+rfi-po+po+rfi-po+po+onces+locked.litmus │ ├── WW+RR+WW+WR+rfi-po+po+rfi-po+rfi-po+onces+locked.litmus │ ├── WW+RW+RR+WR+onces+locked.litmus │ ├── WW+RW+RR+WR+po+po+po+rfi-po+onces+locked.litmus │ ├── WW+RW+RR+WR+rfi-po+po+po+po+onces+locked.litmus │ ├── WW+RW+RR+WR+rfi-po+po+po+rfi-po+onces+locked.litmus │ ├── WW+RW+RW+RR+onces+locked.litmus │ ├── WW+RW+RW+RR+rfi-po+po+po+po+onces+locked.litmus │ ├── WW+RW+RW+RW+onces+locked.litmus │ ├── WW+RW+RW+RW+rfi-po+po+po+po+onces+locked.litmus │ ├── WW+RW+RW+WR+onces+locked.litmus │ ├── WW+RW+RW+WR+po+po+po+rfi-po+onces+locked.litmus │ ├── WW+RW+RW+WR+rfi-po+po+po+po+onces+locked.litmus │ ├── WW+RW+RW+WR+rfi-po+po+po+rfi-po+onces+locked.litmus │ ├── WW+RW+WR+WR+onces+locked.litmus │ ├── WW+RW+WR+WR+po+po+po+rfi-po+onces+locked.litmus │ ├── WW+RW+WR+WR+po+po+rfi-po+po+onces+locked.litmus │ ├── WW+RW+WR+WR+po+po+rfi-po+rfi-po+onces+locked.litmus │ ├── WW+RW+WR+WR+rfi-po+po+po+po+onces+locked.litmus │ ├── WW+RW+WR+WR+rfi-po+po+po+rfi-po+onces+locked.litmus │ ├── WW+RW+WR+WR+rfi-po+po+rfi-po+po+onces+locked.litmus │ ├── WW+RW+WR+WR+rfi-po+po+rfi-po+rfi-po+onces+locked.litmus │ ├── WW+RW+WW+RW+onces+locked.litmus │ ├── WW+RW+WW+RW+po+po+rfi-po+po+onces+locked.litmus │ ├── WW+RW+WW+RW+rfi-po+po+rfi-po+po+onces+locked.litmus │ ├── WW+RW+WW+WR+onces+locked.litmus │ ├── WW+RW+WW+WR+po+po+po+rfi-po+onces+locked.litmus │ ├── WW+RW+WW+WR+po+po+rfi-po+po+onces+locked.litmus │ ├── WW+RW+WW+WR+po+po+rfi-po+rfi-po+onces+locked.litmus │ ├── WW+RW+WW+WR+rfi-po+po+po+po+onces+locked.litmus │ ├── WW+RW+WW+WR+rfi-po+po+po+rfi-po+onces+locked.litmus │ ├── WW+RW+WW+WR+rfi-po+po+rfi-po+po+onces+locked.litmus │ ├── WW+RW+WW+WR+rfi-po+po+rfi-po+rfi-po+onces+locked.litmus │ ├── WW+WR+WR+WR+onces+locked.litmus │ ├── WW+WR+WR+WR+po+po+po+rfi-po+onces+locked.litmus │ ├── WW+WR+WR+WR+po+po+rfi-po+po+onces+locked.litmus │ ├── WW+WR+WR+WR+po+po+rfi-po+rfi-po+onces+locked.litmus │ ├── WW+WR+WR+WR+po+rfi-po+po+po+onces+locked.litmus │ ├── WW+WR+WR+WR+po+rfi-po+po+rfi-po+onces+locked.litmus │ ├── WW+WR+WR+WR+po+rfi-po+rfi-po+po+onces+locked.litmus │ ├── WW+WR+WR+WR+po+rfi-po+rfi-po+rfi-po+onces+locked.litmus │ ├── WW+WR+WR+WR+rfi-po+po+po+po+onces+locked.litmus │ ├── WW+WR+WR+WR+rfi-po+po+po+rfi-po+onces+locked.litmus │ ├── WW+WR+WR+WR+rfi-po+po+rfi-po+po+onces+locked.litmus │ ├── WW+WR+WR+WR+rfi-po+po+rfi-po+rfi-po+onces+locked.litmus │ ├── WW+WR+WR+WR+rfi-po+rfi-po+po+po+onces+locked.litmus │ ├── WW+WR+WR+WR+rfi-po+rfi-po+po+rfi-po+onces+locked.litmus │ ├── WW+WR+WR+WR+rfi-po+rfi-po+rfi-po+po+onces+locked.litmus │ ├── WW+WR+WR+WR+rfi-pos+onces+locked.litmus │ ├── WW+WR+WW+WR+onces+locked.litmus │ ├── WW+WR+WW+WR+po+po+rfi-po+po+onces+locked.litmus │ ├── WW+WR+WW+WR+po+po+rfi-po+rfi-po+onces+locked.litmus │ ├── WW+WR+WW+WR+po+rfi-po+po+po+onces+locked.litmus │ ├── WW+WR+WW+WR+po+rfi-po+po+rfi-po+onces+locked.litmus │ ├── WW+WR+WW+WR+po+rfi-po+rfi-po+po+onces+locked.litmus │ ├── WW+WR+WW+WR+po+rfi-po+rfi-po+rfi-po+onces+locked.litmus │ ├── WW+WR+WW+WR+rfi-po+po+rfi-po+po+onces+locked.litmus │ ├── WW+WR+WW+WR+rfi-po+rfi-po+rfi-po+po+onces+locked.litmus │ ├── WW+WR+WW+WR+rfi-pos+onces+locked.litmus │ ├── WW+WW+RR+WR+onces+locked.litmus │ ├── WW+WW+RR+WR+po+po+po+rfi-po+onces+locked.litmus │ ├── WW+WW+RR+WR+po+rfi-po+po+po+onces+locked.litmus │ ├── WW+WW+RR+WR+po+rfi-po+po+rfi-po+onces+locked.litmus │ ├── WW+WW+RR+WR+rfi-po+po+po+po+onces+locked.litmus │ ├── WW+WW+RR+WR+rfi-po+po+po+rfi-po+onces+locked.litmus │ ├── WW+WW+RR+WR+rfi-po+rfi-po+po+po+onces+locked.litmus │ ├── WW+WW+RR+WR+rfi-po+rfi-po+po+rfi-po+onces+locked.litmus │ ├── WW+WW+RW+RR+onces+locked.litmus │ ├── WW+WW+RW+RR+po+rfi-po+po+po+onces+locked.litmus │ ├── WW+WW+RW+RR+rfi-po+po+po+po+onces+locked.litmus │ ├── WW+WW+RW+RR+rfi-po+rfi-po+po+po+onces+locked.litmus │ ├── WW+WW+RW+RW+onces+locked.litmus │ ├── WW+WW+RW+RW+po+rfi-po+po+po+onces+locked.litmus │ ├── WW+WW+RW+RW+rfi-po+po+po+po+onces+locked.litmus │ ├── WW+WW+RW+RW+rfi-po+rfi-po+po+po+onces+locked.litmus │ ├── WW+WW+RW+WR+onces+locked.litmus │ ├── WW+WW+RW+WR+po+po+po+rfi-po+onces+locked.litmus │ ├── WW+WW+RW+WR+po+rfi-po+po+po+onces+locked.litmus │ ├── WW+WW+RW+WR+po+rfi-po+po+rfi-po+onces+locked.litmus │ ├── WW+WW+RW+WR+rfi-po+po+po+po+onces+locked.litmus │ ├── WW+WW+RW+WR+rfi-po+po+po+rfi-po+onces+locked.litmus │ ├── WW+WW+RW+WR+rfi-po+rfi-po+po+po+onces+locked.litmus │ ├── WW+WW+RW+WR+rfi-po+rfi-po+po+rfi-po+onces+locked.litmus │ ├── WW+WW+WR+WR+onces+locked.litmus │ ├── WW+WW+WR+WR+po+po+po+rfi-po+onces+locked.litmus │ ├── WW+WW+WR+WR+po+po+rfi-po+po+onces+locked.litmus │ ├── WW+WW+WR+WR+po+po+rfi-po+rfi-po+onces+locked.litmus │ ├── WW+WW+WR+WR+po+rfi-po+po+po+onces+locked.litmus │ ├── WW+WW+WR+WR+po+rfi-po+po+rfi-po+onces+locked.litmus │ ├── WW+WW+WR+WR+po+rfi-po+rfi-po+po+onces+locked.litmus │ ├── WW+WW+WR+WR+po+rfi-po+rfi-po+rfi-po+onces+locked.litmus │ ├── WW+WW+WR+WR+rfi-po+po+po+po+onces+locked.litmus │ ├── WW+WW+WR+WR+rfi-po+po+po+rfi-po+onces+locked.litmus │ ├── WW+WW+WR+WR+rfi-po+po+rfi-po+po+onces+locked.litmus │ ├── WW+WW+WR+WR+rfi-po+po+rfi-po+rfi-po+onces+locked.litmus │ ├── WW+WW+WR+WR+rfi-po+rfi-po+po+po+onces+locked.litmus │ ├── WW+WW+WR+WR+rfi-po+rfi-po+po+rfi-po+onces+locked.litmus │ ├── WW+WW+WR+WR+rfi-po+rfi-po+rfi-po+po+onces+locked.litmus │ ├── WW+WW+WR+WR+rfi-pos+onces+locked.litmus │ ├── WW+WW+WW+RR+onces+locked.litmus │ ├── WW+WW+WW+RR+po+po+rfi-po+po+onces+locked.litmus │ ├── WW+WW+WW+RR+po+rfi-po+po+po+onces+locked.litmus │ ├── WW+WW+WW+RR+po+rfi-po+rfi-po+po+onces+locked.litmus │ ├── WW+WW+WW+RR+rfi-po+po+po+po+onces+locked.litmus │ ├── WW+WW+WW+RR+rfi-po+po+rfi-po+po+onces+locked.litmus │ ├── WW+WW+WW+RR+rfi-po+rfi-po+po+po+onces+locked.litmus │ ├── WW+WW+WW+RR+rfi-po+rfi-po+rfi-po+po+onces+locked.litmus │ ├── WW+WW+WW+RW+onces+locked.litmus │ ├── WW+WW+WW+RW+po+po+rfi-po+po+onces+locked.litmus │ ├── WW+WW+WW+RW+po+rfi-po+po+po+onces+locked.litmus │ ├── WW+WW+WW+RW+po+rfi-po+rfi-po+po+onces+locked.litmus │ ├── WW+WW+WW+RW+rfi-po+po+po+po+onces+locked.litmus │ ├── WW+WW+WW+RW+rfi-po+po+rfi-po+po+onces+locked.litmus │ ├── WW+WW+WW+RW+rfi-po+rfi-po+po+po+onces+locked.litmus │ ├── WW+WW+WW+RW+rfi-po+rfi-po+rfi-po+po+onces+locked.litmus │ ├── WW+WW+WW+WR+onces+locked.litmus │ ├── WW+WW+WW+WR+po+po+po+rfi-po+onces+locked.litmus │ ├── WW+WW+WW+WR+po+po+rfi-po+po+onces+locked.litmus │ ├── WW+WW+WW+WR+po+po+rfi-po+rfi-po+onces+locked.litmus │ ├── WW+WW+WW+WR+po+rfi-po+po+po+onces+locked.litmus │ ├── WW+WW+WW+WR+po+rfi-po+po+rfi-po+onces+locked.litmus │ ├── WW+WW+WW+WR+po+rfi-po+rfi-po+po+onces+locked.litmus │ ├── WW+WW+WW+WR+po+rfi-po+rfi-po+rfi-po+onces+locked.litmus │ ├── WW+WW+WW+WR+rfi-po+po+po+po+onces+locked.litmus │ ├── WW+WW+WW+WR+rfi-po+po+po+rfi-po+onces+locked.litmus │ ├── WW+WW+WW+WR+rfi-po+po+rfi-po+po+onces+locked.litmus │ ├── WW+WW+WW+WR+rfi-po+po+rfi-po+rfi-po+onces+locked.litmus │ ├── WW+WW+WW+WR+rfi-po+rfi-po+po+po+onces+locked.litmus │ ├── WW+WW+WW+WR+rfi-po+rfi-po+po+rfi-po+onces+locked.litmus │ ├── WW+WW+WW+WR+rfi-po+rfi-po+rfi-po+po+onces+locked.litmus │ ├── WW+WW+WW+WR+rfi-pos+onces+locked.litmus │ ├── WWC+onces+locked.litmus │ ├── Z6.0+onces+locked.litmus │ ├── Z6.0+po+po+rfi-po+onces+locked.litmus │ ├── Z6.0+rfi-po+po+po+onces+locked.litmus │ ├── Z6.0+rfi-po+po+rfi-po+onces+locked.litmus │ ├── Z6.1+onces+locked.litmus │ ├── Z6.1+po+rfi-po+po+onces+locked.litmus │ ├── Z6.1+rfi-po+po+po+onces+locked.litmus │ ├── Z6.1+rfi-po+rfi-po+po+onces+locked.litmus │ ├── Z6.2+onces+locked.litmus │ ├── Z6.2+rfi-po+po+po+onces+locked.litmus │ ├── Z6.3+onces+locked.litmus │ ├── Z6.3+po+rfi-po+po+onces+locked.litmus │ ├── Z6.3+rfi-po+po+po+onces+locked.litmus │ ├── Z6.3+rfi-po+rfi-po+po+onces+locked.litmus │ ├── Z6.4+onces+locked.litmus │ ├── Z6.4+po+po+rfi-po+onces+locked.litmus │ ├── Z6.4+po+rfi-po+po+onces+locked.litmus │ ├── Z6.4+po+rfi-po+rfi-po+onces+locked.litmus │ ├── Z6.4+rfi-po+po+po+onces+locked.litmus │ ├── Z6.4+rfi-po+po+rfi-po+onces+locked.litmus │ ├── Z6.4+rfi-po+rfi-po+po+onces+locked.litmus │ ├── Z6.4+rfi-pos+onces+locked.litmus │ ├── Z6.5+onces+locked.litmus │ ├── Z6.5+po+po+rfi-po+onces+locked.litmus │ ├── Z6.5+po+rfi-po+po+onces+locked.litmus │ ├── Z6.5+po+rfi-po+rfi-po+onces+locked.litmus │ ├── Z6.5+rfi-po+po+po+onces+locked.litmus │ ├── Z6.5+rfi-po+po+rfi-po+onces+locked.litmus │ ├── Z6.5+rfi-po+rfi-po+po+onces+locked.litmus │ ├── Z6.5+rfi-pos+onces+locked.litmus │ ├── rel-acq-unlock-lock │ │ ├── rel-acq-write-ordering-1.litmus │ │ ├── rel-acq-write-ordering-2.litmus │ │ ├── unlock-lock-write-ordering-1.litmus │ │ ├── unlock-lock-write-ordering-2.litmus │ │ └── unlock-lock-write-ordering-3.litmus │ └── self-deadlock.litmus ├── lwn573436 │ ├── .gitignore │ ├── C-2+2w+o-mb-o+o-mb-o.litmus │ ├── C-2+2w+o-mb-o+o-wb-o.litmus │ ├── C-2+2w+o-wb-o+o-mb-o.litmus │ ├── C-2+2w+o-wb-o+o-wb-o.litmus │ ├── C-3+2w+o-wb-o+o-wb-o+o-wb-o.litmus │ ├── C-iriw+o-mb-o+o-mb-o.litmus │ ├── C-iriw+o-mb-o+o-rmb-o.litmus │ ├── C-iriw+o-rmb-o+o-mb-o.litmus │ ├── C-lb+o-mb-o+o-mb-o.litmus │ ├── C-lb+o-mb-o+o-rmb-o.litmus │ ├── C-mp+o-mb-o+o-mb-o.litmus │ ├── C-mp+o-mb-o+o-mb-o2.litmus │ ├── C-mp+o-mb-o+o-rb-o.litmus │ ├── C-mp+o-mb-o+o-rb-o2.litmus │ ├── C-mp+o-mb-o+o-wmb-o.litmus │ ├── C-mp+o-rmb-o+o-mb-o.litmus │ ├── C-mp+o-wb-o+o-mb-o.litmus │ ├── C-mp+o-wb-o+o-mb-o2.litmus │ ├── C-mp+o-wb-o+o-rb-o.litmus │ ├── C-mp+o-wb-o+o-rb-o2.litmus │ ├── C-r+o-mb-o+o-mb-o.litmus │ ├── C-r+o-mb-o+o-mb-o2.litmus │ ├── C-r+o-mb-o+o-rmb-o2.litmus │ ├── C-r+o-mb-o+o-wb-o.litmus │ ├── C-r+o-mb-o+o-wb-o2.litmus │ ├── C-r+o-wmb-o+o-mb-o2.litmus │ ├── C-r+o-wmb-o+o-rmb-o2.litmus │ ├── C-s+o-mb-o+o-mb-o.litmus │ ├── C-s+o-mb-o+o-mb-o2.litmus │ ├── C-s+o-wb-o+o-mb-o.litmus │ ├── C-s+o-wb-o+o-mb-o2.litmus │ ├── C-sb+o-mb-o+o-mb-o.litmus │ ├── C-wo+ro-mb-ro+wo-mb-ro.litmus │ ├── C-wo+ro-mb-wo+wo-mb-ro.litmus │ ├── C-wo+ro-mb-wo+wo-mb-ro2.litmus │ ├── C-wrc+o-mb-o+o-mb-o.litmus │ ├── C-wrc+o-mb-o+o-mb-o2.litmus │ ├── C-wrc+o-mb-o+o-rb-o.litmus │ ├── C-wrc+o-mb-o+o-rb-o2.litmus │ ├── C-wrc+o-mb-o+o-rmb-o.litmus │ └── README ├── lwn573497 │ ├── .gitignore │ ├── C-2+2w+rl-o-o-rul+o-srcu-o.litmus │ ├── C-dist-r+o+rl-o-o-rul+o-srcu-o.litmus │ ├── C-iriw+o-o+o-o.litmus │ ├── C-iriw+rl-o-o-rul+o-srcu-o.litmus │ ├── C-isa2+rl-o-o-rul+o-srcu-o+o-srcu-o.litmus │ ├── C-isa2+rl-o-o-rul+rl-o-o-rul+o-srcu-o.litmus │ ├── C-lb+rl-deref-addr-rul+o-assign.litmus │ ├── C-lb+rl-deref-addr-rul+o-mb-o.litmus │ ├── C-lb+rl-deref-addr-rul+o-rl.litmus │ ├── C-lb+rl-o-o-rul+o-srcu-o.litmus │ ├── C-mp+o-assign+rl-deref-addr-ul.litmus │ ├── C-mp+o-srcu-o+rl-o-o+rul.litmus │ ├── C-mp+rl-o-o-rul+o-srcu-o.litmus │ ├── C-r+o-o+o-o.litmus │ ├── C-r+rl-rul+srcu.litmus │ ├── C-r+srcu+rl-rul.litmus │ ├── C-s+o-assign+rl-deref-addr-rul.litmus │ ├── C-s+o-assign+rl-deref-rul.litmus │ ├── C-s+o-wmb-o+rl-deref-addr-rul.litmus │ ├── C-s+rl-o-rul+srcu.litmus │ ├── C-s+srcu+rl-o-rul.litmus │ ├── C-sb+rl-rul+srcu.litmus │ ├── C-swap-mp+rl-o-o-rul+o-srcu-o.litmus │ ├── C-w+o+ro-srcu-wo+rl-o-o-rul.litmus │ ├── C-w+rl-ro-ro-rul+wo-srcu-ro.litmus │ ├── C-w+ro-ro+wo-ro.litmus │ ├── C-w+ro-srcu-wo+rl-wo-ro-rul.litmus │ ├── C-w+ro-wo+wo-ro.litmus │ ├── C-wrc+o+o-assign+rl-deref-addr-rul.litmus │ ├── C-wrc+o+o-mb-assign+rl-deref-addr-rul.litmus │ ├── C-wrc+o+o-srcu-o+rl-o-o-rul.litmus │ ├── C-wrc+o+rl-o-o-rul+o-srcu-o.litmus │ ├── C-wrc+o-o+o-o.litmus │ ├── README │ ├── swap-mp+o-srcu-o+rl-o-o+rul.litmus │ └── wrc+o+o-assign+rl-lderef-addr-rul.litmus ├── memb │ ├── C-Goldblatt-memb-1.litmus │ ├── C-Goldblatt-memb-2.litmus │ ├── C-Goldblatt-memb-3.litmus │ ├── C-memb-RCU-0.litmus │ └── C-memb-RCU-1.litmus ├── memory_barriers │ ├── .gitignore │ ├── C-coRR+o-o+o.litmus │ ├── C-coRW1+o+o.litmus │ ├── C-coRW2+o+o.litmus │ ├── C-coWR+o+o.litmus │ ├── C-coWW+o+o.litmus │ ├── C-lb+o-branch-o+o-branch-o.litmus │ ├── C-mp+o-o+o-o.litmus │ ├── C-mp+o-o-mb-o-o+o-o-rb-o-o.litmus │ ├── C-mp+o-o-wb-o-o+o-o-rb-o-o.litmus │ ├── C-mp+o-wb-o+loc-rb-loc.litmus │ ├── C-mp+o-wb-o+o-data-o.litmus │ ├── C-mp+o-wb-o+o-rb+o.litmus │ ├── C-wo+ro-mb-ro+wo-mb-ro.litmus │ ├── C-wo+ro-rb-ro+wo-mb-ro.litmus │ ├── C-wwc+o-branch-o+o-branch-o+o.litmus │ ├── README │ ├── mp+o-wb-o+o-rb_dep-o.litmus │ └── release-ordering.litmus ├── oota │ ├── TC1.litmus │ ├── TC10.litmus │ ├── TC11.litmus │ ├── TC13.litmus │ ├── TC14.litmus │ ├── TC15.litmus │ ├── TC16.litmus │ ├── TC17.litmus │ ├── TC18.litmus │ ├── TC19.litmus │ ├── TC2.litmus │ ├── TC20.litmus │ ├── TC3.litmus │ ├── TC4.litmus │ ├── TC5.litmus │ ├── TC6.litmus │ ├── TC7.litmus │ ├── TC8.litmus │ ├── TC9.litmus │ └── TC9a.litmus ├── plain │ ├── C-AlanStern.2018.01.11a.litmus │ ├── C-LB-rcuderef.litmus │ ├── C-LB1.litmus │ ├── C-LB2.litmus │ ├── C-MP-rcuderef.litmus │ ├── C-MP1.litmus │ ├── C-OOTA.litmus │ ├── C-RR-rcuderef.litmus │ ├── C-RR-rcuderef1.litmus │ ├── C-RRDR-rcuderef.litmus │ ├── C-S+o-mb-o+o-ctl-p.litmus │ ├── C-S-rcuderef.litmus │ ├── C-S-rcunoderef-1.litmus │ ├── C-S-rcunoderef-2.litmus │ ├── C-S-rcunoderef-3.litmus │ ├── C-S-rcunoderef-4.litmus │ ├── C-data-race-of-execution.litmus │ ├── C-no-race.litmus │ ├── C-non-conflicting-writes.litmus │ ├── C-non-race1-rrdep.litmus │ ├── C-non-race1-rwdep.litmus │ ├── C-non-race1.litmus │ ├── C-non-race3.litmus │ ├── C-non-race4.litmus │ ├── C-propagation-and-write-races.litmus │ ├── C-repload.litmus │ ├── C-tearload.litmus │ ├── C-tearstore.litmus │ ├── C-tmpstore.litmus │ ├── C-wmb-race2.litmus │ ├── MP+wmbplainplain+rmbplainplain.litmus │ └── strong-vis.litmus ├── rcu │ ├── C-rcu-link-after-rf.litmus │ ├── C-rcu-link-after.litmus │ ├── C-rcu-link-before.litmus │ ├── LB-GRW+R-Dd+R-Ddpo.litmus │ ├── LB-LRW+R-Od+O-Od+O-Od+O-Od.litmus │ ├── LISA1R1G.litmus │ ├── LISA1R1Gdeadlock.litmus │ ├── LISA1R1n1G.litmus │ ├── LISA1Rd1G.litmus │ ├── LISA1Rdc1G-buggy.litmus │ ├── LISA1Rib1G.litmus │ ├── LISA1Rr1G.litmus │ ├── LISA1Rx1GM.litmus │ ├── LISA1xR1GM.litmus │ ├── LISA2R1G.litmus │ ├── LISA2R2G.litmus │ ├── LISA2R2Gt.litmus │ ├── LISA2Re1G.litmus │ ├── LISA2Rec1G.litmus │ ├── LISA2Rei1G.litmus │ ├── LISA2Rf1G.litmus │ ├── LISA2Rfi1G.litmus │ ├── LISA2Rftx1GM.litmus │ ├── LISA2Rt1G.litmus │ ├── LISA2Rt2G.litmus │ ├── LISA2Rtx1GM-C.litmus │ ├── LISA2Rtx1GM.litmus │ ├── LISA2Rtxf1GM.litmus │ ├── LISA2qR1G.litmus │ ├── LISA3G.litmus │ ├── LISA3R1G.litmus │ ├── LISA3R1Gq.litmus │ ├── LISA3R2G.litmus │ ├── LISA3R3G.litmus │ ├── LISA3Rq1G.litmus │ ├── LISA3Rqq1G.litmus │ ├── LISA3qRq1G.litmus │ ├── LISA4R2t.litmus │ ├── LISADL1.litmus │ ├── LISADL2ND.litmus │ ├── LISAStern.2016.02.24a.litmus │ ├── LISAdep.litmus │ ├── LISAdepRW.litmus │ ├── LISAnoDL0.litmus │ ├── LISAnoDL1.litmus │ ├── LISAnoDL2.litmus │ ├── LISAnoDL3-B.litmus │ ├── LISAq3R1G.litmus │ ├── rcu-B-cumulativity-failure.litmus │ ├── rcu-barrier-vs-relacq.litmus │ ├── rcu-heuristics-failure.litmus │ ├── rcu-relacq-test.litmus │ ├── rcu-relacq1-Auxiliary.litmus │ ├── rcu-relacq1.litmus │ ├── rcu-relacq2-Auxiliary.litmus │ └── rcu-relacq2.litmus └── srcu │ ├── C-SRCU-42-A.litmus │ ├── C-SRCU-42.litmus │ ├── C-SRCU-63-A.litmus │ ├── C-SRCU-63.litmus │ ├── C-SRCU-82-A.litmus │ ├── C-SRCU-LB-42-A.litmus │ ├── C-SRCU-LB-42R-A.litmus │ ├── C-SRCU-LB-82-A.litmus │ ├── C-SRCU-misnest-not.litmus │ ├── C-SRCU-misnest.litmus │ ├── C-SRCU2-LB-split.litmus │ └── C-s2.litmus ├── models ├── alan-kernel-2016.04.28.bell ├── alan-kernel-2016.04.28.cat ├── luc.2015.11.25a.bell ├── luc.2015.11.25a.cat ├── luc.2015.12.11a.bell ├── luc.2015.12.11a.cat ├── luc.2016.03.09a.bell ├── luc.2016.03.09a.cat ├── pem.2016.01.20a.bell └── pem.2016.01.20a.cat └── perf ├── absperf-reduce.sh └── absperf.sh /.gitignore: -------------------------------------------------------------------------------- 1 | *.litmus.out 2 | *.litmus.out.new 3 | *.swp 4 | *.swo 5 | *.pdf 6 | *.aux 7 | *.blg 8 | *.log 9 | *.out 10 | *-Aux.litmus 11 | *-AuxCat.litmus 12 | *~ 13 | *-BPF.litmus 14 | *-BPF.litmus.out 15 | -------------------------------------------------------------------------------- /RCUlitmusGen/.gitignore: -------------------------------------------------------------------------------- 1 | *.litmus 2 | litmus 3 | litmus.* 4 | shortlitmus.sh 5 | linux.def 6 | lock.cat 7 | strong-kernel.bell 8 | strong-kernel.cat 9 | strong.cfg 10 | weak-kernel.cat 11 | weak.cfg 12 | -------------------------------------------------------------------------------- /RCUlitmusGen/auto: -------------------------------------------------------------------------------- 1 | ../auto -------------------------------------------------------------------------------- /RCUxlate/.gitignore: -------------------------------------------------------------------------------- 1 | stripocamlcomment 2 | -------------------------------------------------------------------------------- /auto/C-LB-GRR+OB-OB.litmus: -------------------------------------------------------------------------------- 1 | C auto/C-LB-GRR+OB-OB 2 | (* 3 | * Result: Never 4 | * 5 | *) 6 | { 7 | } 8 | 9 | P0(intptr_t *u0, intptr_t *x1) 10 | { 11 | intptr_t r1 = READ_ONCE(*u0); 12 | smp_mb(); 13 | WRITE_ONCE(*x1, 1); 14 | } 15 | 16 | 17 | P1(intptr_t *v0, intptr_t *x1) 18 | { 19 | intptr_t r1 = READ_ONCE(*x1); 20 | smp_mb(); 21 | intptr_t r2 = READ_ONCE(*v0); 22 | } 23 | 24 | 25 | P2(intptr_t *u0, intptr_t *v0) 26 | { 27 | WRITE_ONCE(*v0, 1); 28 | smp_mb(); 29 | WRITE_ONCE(*u0, 1); 30 | } 31 | 32 | exists 33 | (1:r2=0 /\ 0:r1=1 /\ 1:r1=1) 34 | -------------------------------------------------------------------------------- /auto/C-LB-GRW+OB-OB.litmus: -------------------------------------------------------------------------------- 1 | C auto/C-LB-GRW+OB-OB 2 | (* 3 | * Result: Never 4 | * 5 | *) 6 | { 7 | } 8 | 9 | P0(intptr_t *u0, intptr_t *x1) 10 | { 11 | intptr_t r1 = READ_ONCE(*u0); 12 | smp_mb(); 13 | WRITE_ONCE(*x1, 1); 14 | } 15 | 16 | 17 | P1(intptr_t *v0, intptr_t *x1) 18 | { 19 | intptr_t r1 = READ_ONCE(*x1); 20 | smp_mb(); 21 | WRITE_ONCE(*v0, 1); 22 | } 23 | 24 | 25 | P2(intptr_t *u0, intptr_t *v0) 26 | { 27 | intptr_t r1 = READ_ONCE(*v0); 28 | smp_mb(); 29 | WRITE_ONCE(*u0, 1); 30 | } 31 | 32 | exists 33 | (2:r1=1 /\ 0:r1=1 /\ 1:r1=1) 34 | -------------------------------------------------------------------------------- /auto/C-LB-GRW+R-A.litmus: -------------------------------------------------------------------------------- 1 | C auto/C-LB-GRW+R-A 2 | (* 3 | * Result: Never 4 | * P0 GRW: B-cumulativity provides guarantee 5 | *) 6 | { 7 | } 8 | 9 | P0(intptr_t *u0, intptr_t *x1) 10 | { 11 | intptr_t r1 = READ_ONCE(*u0); 12 | smp_store_release(x1, 1); 13 | } 14 | 15 | 16 | P1(intptr_t *v0, intptr_t *x1) 17 | { 18 | intptr_t r1 = smp_load_acquire(x1); 19 | WRITE_ONCE(*v0, 1); 20 | } 21 | 22 | 23 | P2(intptr_t *u0, intptr_t *v0) 24 | { 25 | intptr_t r1 = READ_ONCE(*v0); 26 | smp_mb(); 27 | WRITE_ONCE(*u0, 1); 28 | } 29 | 30 | exists 31 | (2:r1=1 /\ 0:r1=1 /\ 1:r1=1) 32 | -------------------------------------------------------------------------------- /auto/C-LB-GWR+OB-OB.litmus: -------------------------------------------------------------------------------- 1 | C auto/C-LB-GWR+OB-OB 2 | (* 3 | * Result: Never 4 | * 5 | *) 6 | { 7 | } 8 | 9 | P0(intptr_t *u0, intptr_t *x1) 10 | { 11 | WRITE_ONCE(*u0, 3); 12 | smp_mb(); 13 | WRITE_ONCE(*x1, 1); 14 | } 15 | 16 | 17 | P1(intptr_t *v0, intptr_t *x1) 18 | { 19 | intptr_t r1 = READ_ONCE(*x1); 20 | smp_mb(); 21 | intptr_t r2 = READ_ONCE(*v0); 22 | } 23 | 24 | 25 | P2(intptr_t *u0, intptr_t *v0) 26 | { 27 | WRITE_ONCE(*v0, 1); 28 | smp_mb(); 29 | intptr_t r2 = READ_ONCE(*u0); 30 | } 31 | 32 | exists 33 | (1:r2=0 /\ 2:r2=0 /\ 1:r1=1) 34 | -------------------------------------------------------------------------------- /auto/C-LB-GWW+OB-OB.litmus: -------------------------------------------------------------------------------- 1 | C auto/C-LB-GWW+OB-OB 2 | (* 3 | * Result: Never 4 | * 5 | *) 6 | { 7 | } 8 | 9 | P0(intptr_t *u0, intptr_t *x1) 10 | { 11 | WRITE_ONCE(*u0, 3); 12 | smp_mb(); 13 | WRITE_ONCE(*x1, 1); 14 | } 15 | 16 | 17 | P1(intptr_t *v0, intptr_t *x1) 18 | { 19 | intptr_t r1 = READ_ONCE(*x1); 20 | smp_mb(); 21 | WRITE_ONCE(*v0, 1); 22 | } 23 | 24 | 25 | P2(intptr_t *u0, intptr_t *v0) 26 | { 27 | intptr_t r1 = READ_ONCE(*v0); 28 | smp_mb(); 29 | intptr_t r2 = READ_ONCE(*u0); 30 | } 31 | 32 | exists 33 | (2:r1=1 /\ 2:r2=0 /\ 1:r1=1) 34 | -------------------------------------------------------------------------------- /auto/C-LB-LRW+OB-Dv.litmus: -------------------------------------------------------------------------------- 1 | C auto/C-LB-LRW+OB-Dv 2 | (* 3 | * Result: Never 4 | * 5 | *) 6 | { 7 | } 8 | 9 | P0(intptr_t *u0, intptr_t *x1) 10 | { 11 | intptr_t r1 = READ_ONCE(*u0); 12 | smp_mb(); 13 | WRITE_ONCE(*x1, 1); 14 | } 15 | 16 | 17 | P1(intptr_t *u0, intptr_t *x1) 18 | { 19 | intptr_t r1 = (intptr_t)rcu_dereference(*(intptr_t **)x1); 20 | WRITE_ONCE(*u0, r1); 21 | } 22 | 23 | exists 24 | (0:r1=1 /\ 1:r1=1) 25 | -------------------------------------------------------------------------------- /auto/C-LB-LRW+OB-O+OB-OB.litmus: -------------------------------------------------------------------------------- 1 | C auto/C-LB-LRW+OB-O+OB-OB 2 | (* 3 | * Result: Never 4 | * 5 | *) 6 | { 7 | } 8 | 9 | P0(intptr_t *u0, intptr_t *x1) 10 | { 11 | intptr_t r1 = READ_ONCE(*u0); 12 | smp_mb(); 13 | WRITE_ONCE(*x1, 1); 14 | } 15 | 16 | 17 | P1(intptr_t *x1, intptr_t *x2) 18 | { 19 | intptr_t r1 = READ_ONCE(*x1); 20 | smp_mb(); 21 | WRITE_ONCE(*x2, 1); 22 | } 23 | 24 | 25 | P2(intptr_t *x2, intptr_t *u0) 26 | { 27 | intptr_t r1 = READ_ONCE(*x2); 28 | smp_mb(); 29 | WRITE_ONCE(*u0, 1); 30 | } 31 | 32 | exists 33 | (0:r1=1 /\ 1:r1=1 /\ 2:r1=1) 34 | -------------------------------------------------------------------------------- /auto/C-LB-LRW+OB-Ov.litmus: -------------------------------------------------------------------------------- 1 | C auto/C-LB-LRW+OB-Ov 2 | (* 3 | * Result: Never 4 | * 5 | *) 6 | { 7 | } 8 | 9 | P0(intptr_t *u0, intptr_t *x1) 10 | { 11 | intptr_t r1 = READ_ONCE(*u0); 12 | smp_mb(); 13 | WRITE_ONCE(*x1, 1); 14 | } 15 | 16 | 17 | P1(intptr_t *u0, intptr_t *x1) 18 | { 19 | intptr_t r1 = READ_ONCE(*x1); 20 | WRITE_ONCE(*u0, r1); 21 | } 22 | 23 | exists 24 | (0:r1=1 /\ 1:r1=1) 25 | -------------------------------------------------------------------------------- /auto/C-LB-LRW+R-A+OB-OB.litmus: -------------------------------------------------------------------------------- 1 | C auto/C-LB-LRW+R-A+OB-OB 2 | (* 3 | * Result: Never 4 | * 5 | *) 6 | { 7 | } 8 | 9 | P0(intptr_t *u0, intptr_t *x1) 10 | { 11 | intptr_t r1 = READ_ONCE(*u0); 12 | smp_store_release(x1, 1); 13 | } 14 | 15 | 16 | P1(intptr_t *x1, intptr_t *x2) 17 | { 18 | intptr_t r1 = smp_load_acquire(x1); 19 | smp_mb(); 20 | WRITE_ONCE(*x2, 1); 21 | } 22 | 23 | 24 | P2(intptr_t *x2, intptr_t *u0) 25 | { 26 | intptr_t r1 = READ_ONCE(*x2); 27 | smp_mb(); 28 | WRITE_ONCE(*u0, 1); 29 | } 30 | 31 | exists 32 | (0:r1=1 /\ 1:r1=1 /\ 2:r1=1) 33 | -------------------------------------------------------------------------------- /auto/C-LB-LRW+R-A+R-A.litmus: -------------------------------------------------------------------------------- 1 | C auto/C-LB-LRW+R-A+R-A 2 | (* 3 | * Result: Never 4 | * 5 | *) 6 | { 7 | } 8 | 9 | P0(intptr_t *u0, intptr_t *x1) 10 | { 11 | intptr_t r1 = READ_ONCE(*u0); 12 | smp_store_release(x1, 1); 13 | } 14 | 15 | 16 | P1(intptr_t *x1, intptr_t *x2) 17 | { 18 | intptr_t r1 = smp_load_acquire(x1); 19 | smp_store_release(x2, 1); 20 | } 21 | 22 | 23 | P2(intptr_t *x2, intptr_t *u0) 24 | { 25 | intptr_t r1 = smp_load_acquire(x2); 26 | WRITE_ONCE(*u0, 1); 27 | } 28 | 29 | exists 30 | (0:r1=1 /\ 1:r1=1 /\ 2:r1=1) 31 | -------------------------------------------------------------------------------- /auto/C-LB-LRW+R-A+RQ-A.litmus: -------------------------------------------------------------------------------- 1 | C auto/C-LB-LRW+R-A+RQ-A 2 | (* 3 | * Result: Never 4 | * 5 | *) 6 | { 7 | } 8 | 9 | P0(intptr_t *u0, intptr_t *x1) 10 | { 11 | intptr_t r1 = READ_ONCE(*u0); 12 | smp_store_release(x1, 1); 13 | } 14 | 15 | 16 | P1(intptr_t *x1, intptr_t *x2) 17 | { 18 | intptr_t r1 = smp_load_acquire(x1); 19 | smp_store_release(x2, 2); 20 | WRITE_ONCE(*x2, 1); 21 | } 22 | 23 | 24 | P2(intptr_t *x2, intptr_t *u0) 25 | { 26 | intptr_t r1 = smp_load_acquire(x2); 27 | WRITE_ONCE(*u0, 1); 28 | } 29 | 30 | exists 31 | (0:r1=1 /\ 1:r1=1 /\ 2:r1=1) 32 | -------------------------------------------------------------------------------- /auto/C-LB-LRW+RQ-A+R-A.litmus: -------------------------------------------------------------------------------- 1 | C auto/C-LB-LRW+RQ-A+R-A 2 | (* 3 | * Result: Never 4 | * 5 | *) 6 | { 7 | } 8 | 9 | P0(intptr_t *u0, intptr_t *x1) 10 | { 11 | intptr_t r1 = READ_ONCE(*u0); 12 | smp_store_release(x1, 2); 13 | WRITE_ONCE(*x1, 1); 14 | } 15 | 16 | 17 | P1(intptr_t *x1, intptr_t *x2) 18 | { 19 | intptr_t r1 = smp_load_acquire(x1); 20 | smp_store_release(x2, 1); 21 | } 22 | 23 | 24 | P2(intptr_t *x2, intptr_t *u0) 25 | { 26 | intptr_t r1 = smp_load_acquire(x2); 27 | WRITE_ONCE(*u0, 1); 28 | } 29 | 30 | exists 31 | (0:r1=1 /\ 1:r1=1 /\ 2:r1=1) 32 | -------------------------------------------------------------------------------- /auto/C-LB-LWR+OB-O+OB-OB.litmus: -------------------------------------------------------------------------------- 1 | C auto/C-LB-LWR+OB-O+OB-OB 2 | (* 3 | * Result: Never 4 | * 5 | *) 6 | { 7 | } 8 | 9 | P0(intptr_t *u0, intptr_t *x1) 10 | { 11 | WRITE_ONCE(*u0, 3); 12 | smp_mb(); 13 | WRITE_ONCE(*x1, 1); 14 | } 15 | 16 | 17 | P1(intptr_t *x1, intptr_t *x2) 18 | { 19 | intptr_t r1 = READ_ONCE(*x1); 20 | smp_mb(); 21 | WRITE_ONCE(*x2, 1); 22 | } 23 | 24 | 25 | P2(intptr_t *x2, intptr_t *u0) 26 | { 27 | intptr_t r1 = READ_ONCE(*x2); 28 | smp_mb(); 29 | intptr_t r2 = READ_ONCE(*u0); 30 | } 31 | 32 | exists 33 | (2:r2=0 /\ 1:r1=1 /\ 2:r1=1) 34 | -------------------------------------------------------------------------------- /auto/C-LB-LWR+R-A+OB-OB.litmus: -------------------------------------------------------------------------------- 1 | C auto/C-LB-LWR+R-A+OB-OB 2 | (* 3 | * Result: Never 4 | * 5 | *) 6 | { 7 | } 8 | 9 | P0(intptr_t *u0, intptr_t *x1) 10 | { 11 | WRITE_ONCE(*u0, 3); 12 | smp_store_release(x1, 1); 13 | } 14 | 15 | 16 | P1(intptr_t *x1, intptr_t *x2) 17 | { 18 | intptr_t r1 = smp_load_acquire(x1); 19 | smp_mb(); 20 | WRITE_ONCE(*x2, 1); 21 | } 22 | 23 | 24 | P2(intptr_t *x2, intptr_t *u0) 25 | { 26 | intptr_t r1 = READ_ONCE(*x2); 27 | smp_mb(); 28 | intptr_t r2 = READ_ONCE(*u0); 29 | } 30 | 31 | exists 32 | (2:r2=0 /\ 1:r1=1 /\ 2:r1=1) 33 | -------------------------------------------------------------------------------- /auto/C-LB-LWR+R-A+R-A.litmus: -------------------------------------------------------------------------------- 1 | C auto/C-LB-LWR+R-A+R-A 2 | (* 3 | * Result: Never 4 | * 5 | *) 6 | { 7 | } 8 | 9 | P0(intptr_t *u0, intptr_t *x1) 10 | { 11 | WRITE_ONCE(*u0, 3); 12 | smp_store_release(x1, 1); 13 | } 14 | 15 | 16 | P1(intptr_t *x1, intptr_t *x2) 17 | { 18 | intptr_t r1 = smp_load_acquire(x1); 19 | smp_store_release(x2, 1); 20 | } 21 | 22 | 23 | P2(intptr_t *x2, intptr_t *u0) 24 | { 25 | intptr_t r1 = smp_load_acquire(x2); 26 | intptr_t r2 = READ_ONCE(*u0); 27 | } 28 | 29 | exists 30 | (2:r2=0 /\ 1:r1=1 /\ 2:r1=1) 31 | -------------------------------------------------------------------------------- /auto/C-LB-LWW+OB-O+OB-OB.litmus: -------------------------------------------------------------------------------- 1 | C auto/C-LB-LWW+OB-O+OB-OB 2 | (* 3 | * Result: Never 4 | * 5 | *) 6 | { 7 | } 8 | 9 | P0(intptr_t *u0, intptr_t *x1) 10 | { 11 | WRITE_ONCE(*u0, 3); 12 | smp_mb(); 13 | WRITE_ONCE(*x1, 1); 14 | } 15 | 16 | 17 | P1(intptr_t *x1, intptr_t *x2) 18 | { 19 | intptr_t r1 = READ_ONCE(*x1); 20 | smp_mb(); 21 | WRITE_ONCE(*x2, 1); 22 | } 23 | 24 | 25 | P2(intptr_t *x2, intptr_t *u0) 26 | { 27 | intptr_t r1 = READ_ONCE(*x2); 28 | smp_mb(); 29 | WRITE_ONCE(*u0, 1); 30 | } 31 | 32 | exists 33 | (u0=3 /\ 1:r1=1 /\ 2:r1=1) 34 | -------------------------------------------------------------------------------- /auto/C-LB-LWW+R-A+OB-OB.litmus: -------------------------------------------------------------------------------- 1 | C auto/C-LB-LWW+R-A+OB-OB 2 | (* 3 | * Result: Never 4 | * 5 | *) 6 | { 7 | } 8 | 9 | P0(intptr_t *u0, intptr_t *x1) 10 | { 11 | WRITE_ONCE(*u0, 3); 12 | smp_store_release(x1, 1); 13 | } 14 | 15 | 16 | P1(intptr_t *x1, intptr_t *x2) 17 | { 18 | intptr_t r1 = smp_load_acquire(x1); 19 | smp_mb(); 20 | WRITE_ONCE(*x2, 1); 21 | } 22 | 23 | 24 | P2(intptr_t *x2, intptr_t *u0) 25 | { 26 | intptr_t r1 = READ_ONCE(*x2); 27 | smp_mb(); 28 | WRITE_ONCE(*u0, 1); 29 | } 30 | 31 | exists 32 | (u0=3 /\ 1:r1=1 /\ 2:r1=1) 33 | -------------------------------------------------------------------------------- /auto/C-LB-LWW+R-A+R-A.litmus: -------------------------------------------------------------------------------- 1 | C auto/C-LB-LWW+R-A+R-A 2 | (* 3 | * Result: Never 4 | * 5 | *) 6 | { 7 | } 8 | 9 | P0(intptr_t *u0, intptr_t *x1) 10 | { 11 | WRITE_ONCE(*u0, 3); 12 | smp_store_release(x1, 1); 13 | } 14 | 15 | 16 | P1(intptr_t *x1, intptr_t *x2) 17 | { 18 | intptr_t r1 = smp_load_acquire(x1); 19 | smp_store_release(x2, 1); 20 | } 21 | 22 | 23 | P2(intptr_t *x2, intptr_t *u0) 24 | { 25 | intptr_t r1 = smp_load_acquire(x2); 26 | WRITE_ONCE(*u0, 1); 27 | } 28 | 29 | exists 30 | (u0=3 /\ 1:r1=1 /\ 2:r1=1) 31 | -------------------------------------------------------------------------------- /auto/C-LB-Lrw+R-A+R-A.litmus: -------------------------------------------------------------------------------- 1 | C auto/C-LB-Lrw+R-A+R-A 2 | (* 3 | * Result: Never DATARACE 4 | * 5 | *) 6 | { 7 | } 8 | 9 | P0(intptr_t *u0, intptr_t *x1) 10 | { 11 | intptr_t r1 = *u0; 12 | smp_store_release(x1, 1); 13 | } 14 | 15 | 16 | P1(intptr_t *x1, intptr_t *x2) 17 | { 18 | intptr_t r1 = smp_load_acquire(x1); 19 | smp_store_release(x2, 1); 20 | } 21 | 22 | 23 | P2(intptr_t *x2, intptr_t *u0) 24 | { 25 | intptr_t r1 = smp_load_acquire(x2); 26 | *u0 = 1; 27 | } 28 | 29 | exists 30 | (0:r1=1 /\ 1:r1=1 /\ 2:r1=1) 31 | -------------------------------------------------------------------------------- /auto/C-LB-Lrw+R-A+R-D.litmus: -------------------------------------------------------------------------------- 1 | C auto/C-LB-Lrw+R-A+R-D 2 | (* 3 | * Result: Sometimes DATARACE 4 | * P2 D,Lrw: Never->Sometimes: No ordering 5 | *) 6 | { 7 | } 8 | 9 | P0(intptr_t *u0, intptr_t *x1) 10 | { 11 | intptr_t r1 = *u0; 12 | smp_store_release(x1, 1); 13 | } 14 | 15 | 16 | P1(intptr_t *x1, intptr_t *x2) 17 | { 18 | intptr_t r1 = smp_load_acquire(x1); 19 | smp_store_release(x2, 1); 20 | } 21 | 22 | 23 | P2(intptr_t *x2, intptr_t *u0) 24 | { 25 | intptr_t r1 = (intptr_t)rcu_dereference(*(intptr_t **)x2); 26 | *u0 = 1; 27 | } 28 | 29 | exists 30 | (0:r1=1 /\ 1:r1=1 /\ 2:r1=1) 31 | -------------------------------------------------------------------------------- /auto/C-LB-Lrw+R-A+R-Od.litmus: -------------------------------------------------------------------------------- 1 | C auto/C-LB-Lrw+R-A+R-Od 2 | (* 3 | * Result: Never DATARACE 4 | * 5 | *) 6 | { 7 | x2=y2; 8 | } 9 | 10 | P0(intptr_t *u0, intptr_t *x1) 11 | { 12 | intptr_t r1 = *u0; 13 | smp_store_release(x1, 1); 14 | } 15 | 16 | 17 | P1(intptr_t *u0, intptr_t *x1, intptr_t *x2) 18 | { 19 | intptr_t r3=u0; 20 | 21 | intptr_t r1 = smp_load_acquire(x1); 22 | smp_store_release(x2, r3); 23 | } 24 | 25 | 26 | P2(intptr_t *x2) 27 | { 28 | intptr_t r1 = READ_ONCE(*x2); 29 | *r1 = 1; 30 | } 31 | 32 | exists 33 | (0:r1=1 /\ 1:r1=1 /\ 2:r1=u0) 34 | -------------------------------------------------------------------------------- /auto/C-LB-Lrw+R-A.litmus: -------------------------------------------------------------------------------- 1 | C auto/C-LB-Lrw+R-A 2 | (* 3 | * Result: Never DATARACE 4 | * 5 | *) 6 | { 7 | } 8 | 9 | P0(intptr_t *u0, intptr_t *x1) 10 | { 11 | intptr_t r1 = *u0; 12 | smp_store_release(x1, 1); 13 | } 14 | 15 | 16 | P1(intptr_t *u0, intptr_t *x1) 17 | { 18 | intptr_t r1 = smp_load_acquire(x1); 19 | *u0 = 1; 20 | } 21 | 22 | exists 23 | (0:r1=1 /\ 1:r1=1) 24 | -------------------------------------------------------------------------------- /auto/C-LB-Lrw+R-D.litmus: -------------------------------------------------------------------------------- 1 | C auto/C-LB-Lrw+R-D 2 | (* 3 | * Result: Sometimes DATARACE 4 | * P1 D,Lrw: Never->Sometimes: No ordering 5 | *) 6 | { 7 | } 8 | 9 | P0(intptr_t *u0, intptr_t *x1) 10 | { 11 | intptr_t r1 = *u0; 12 | smp_store_release(x1, 1); 13 | } 14 | 15 | 16 | P1(intptr_t *u0, intptr_t *x1) 17 | { 18 | intptr_t r1 = (intptr_t)rcu_dereference(*(intptr_t **)x1); 19 | *u0 = 1; 20 | } 21 | 22 | exists 23 | (0:r1=1 /\ 1:r1=1) 24 | -------------------------------------------------------------------------------- /auto/C-LB-Lrw+R-OC.litmus: -------------------------------------------------------------------------------- 1 | C auto/C-LB-Lrw+R-OC 2 | (* 3 | * Result: Never DATARACE 4 | * 5 | *) 6 | { 7 | } 8 | 9 | P0(intptr_t *u0, intptr_t *x1) 10 | { 11 | intptr_t r1 = *u0; 12 | smp_store_release(x1, 1); 13 | } 14 | 15 | 16 | P1(intptr_t *u0, intptr_t *x1) 17 | { 18 | intptr_t r4=1; 19 | 20 | intptr_t r1 = READ_ONCE(*x1); 21 | r4 = (r1 == r4); 22 | if (r4) { 23 | smp_rmb(); 24 | *u0 = 1; 25 | } 26 | } 27 | 28 | exists 29 | (0:r1=1 /\ 1:r1=1) 30 | -------------------------------------------------------------------------------- /auto/C-LB-Lrw+R-Oc.litmus: -------------------------------------------------------------------------------- 1 | C auto/C-LB-Lrw+R-Oc 2 | (* 3 | * Result: Never DATARACE 4 | * 5 | *) 6 | { 7 | } 8 | 9 | P0(intptr_t *u0, intptr_t *x1) 10 | { 11 | intptr_t r1 = *u0; 12 | smp_store_release(x1, 1); 13 | } 14 | 15 | 16 | P1(intptr_t *u0, intptr_t *x1) 17 | { 18 | intptr_t r4=1; 19 | 20 | intptr_t r1 = READ_ONCE(*x1); 21 | r4 = (r1 == r4); 22 | if (r4) { 23 | *u0 = 1; 24 | } 25 | } 26 | 27 | exists 28 | (0:r1=1 /\ 1:r1=1) 29 | -------------------------------------------------------------------------------- /auto/C-LB-Lrw+R-Od.litmus: -------------------------------------------------------------------------------- 1 | C auto/C-LB-Lrw+R-Od 2 | (* 3 | * Result: Never 4 | * 5 | *) 6 | { 7 | x1=y1; 8 | } 9 | 10 | P0(intptr_t *u0, intptr_t *x1) 11 | { 12 | intptr_t r3=u0; 13 | 14 | intptr_t r1 = *u0; 15 | smp_store_release(x1, r3); 16 | } 17 | 18 | 19 | P1(intptr_t *x1) 20 | { 21 | intptr_t r1 = READ_ONCE(*x1); 22 | *r1 = 1; 23 | } 24 | 25 | exists 26 | (0:r1=1 /\ 1:r1=u0) 27 | -------------------------------------------------------------------------------- /auto/C-LB-Lwr+R-A+R-A.litmus: -------------------------------------------------------------------------------- 1 | C auto/C-LB-Lwr+R-A+R-A 2 | (* 3 | * Result: Never DATARACE 4 | * 5 | *) 6 | { 7 | } 8 | 9 | P0(intptr_t *u0, intptr_t *x1) 10 | { 11 | *u0 = 3; 12 | smp_store_release(x1, 1); 13 | } 14 | 15 | 16 | P1(intptr_t *x1, intptr_t *x2) 17 | { 18 | intptr_t r1 = smp_load_acquire(x1); 19 | smp_store_release(x2, 1); 20 | } 21 | 22 | 23 | P2(intptr_t *x2, intptr_t *u0) 24 | { 25 | intptr_t r1 = smp_load_acquire(x2); 26 | intptr_t r2 = *u0; 27 | } 28 | 29 | exists 30 | (2:r2=0 /\ 1:r1=1 /\ 2:r1=1) 31 | -------------------------------------------------------------------------------- /auto/C-LB-Lwr+R-A+R-D.litmus: -------------------------------------------------------------------------------- 1 | C auto/C-LB-Lwr+R-A+R-D 2 | (* 3 | * Result: Sometimes DATARACE 4 | * P2 D,Lwr: Never->Sometimes: No ordering 5 | *) 6 | { 7 | } 8 | 9 | P0(intptr_t *u0, intptr_t *x1) 10 | { 11 | *u0 = 3; 12 | smp_store_release(x1, 1); 13 | } 14 | 15 | 16 | P1(intptr_t *x1, intptr_t *x2) 17 | { 18 | intptr_t r1 = smp_load_acquire(x1); 19 | smp_store_release(x2, 1); 20 | } 21 | 22 | 23 | P2(intptr_t *x2, intptr_t *u0) 24 | { 25 | intptr_t r1 = (intptr_t)rcu_dereference(*(intptr_t **)x2); 26 | intptr_t r2 = *u0; 27 | } 28 | 29 | exists 30 | (2:r2=0 /\ 1:r1=1 /\ 2:r1=1) 31 | -------------------------------------------------------------------------------- /auto/C-LB-Lwr+R-A+R-Od.litmus: -------------------------------------------------------------------------------- 1 | C auto/C-LB-Lwr+R-A+R-Od 2 | (* 3 | * Result: Never DATARACE 4 | * 5 | *) 6 | { 7 | x2=y2; 8 | } 9 | 10 | P0(intptr_t *u0, intptr_t *x1) 11 | { 12 | *u0 = 3; 13 | smp_store_release(x1, 1); 14 | } 15 | 16 | 17 | P1(intptr_t *u0, intptr_t *x1, intptr_t *x2) 18 | { 19 | intptr_t r3=u0; 20 | 21 | intptr_t r1 = smp_load_acquire(x1); 22 | smp_store_release(x2, r3); 23 | } 24 | 25 | 26 | P2(intptr_t *x2) 27 | { 28 | intptr_t r1 = READ_ONCE(*x2); 29 | intptr_t r2 = *(intptr_t *)r1; 30 | } 31 | 32 | exists 33 | (2:r2=0 /\ 1:r1=1 /\ 2:r1=u0) 34 | -------------------------------------------------------------------------------- /auto/C-LB-Lwr+R-A.litmus: -------------------------------------------------------------------------------- 1 | C auto/C-LB-Lwr+R-A 2 | (* 3 | * Result: Never DATARACE 4 | * 5 | *) 6 | { 7 | } 8 | 9 | P0(intptr_t *u0, intptr_t *x1) 10 | { 11 | *u0 = 3; 12 | smp_store_release(x1, 1); 13 | } 14 | 15 | 16 | P1(intptr_t *u0, intptr_t *x1) 17 | { 18 | intptr_t r1 = smp_load_acquire(x1); 19 | intptr_t r2 = *u0; 20 | } 21 | 22 | exists 23 | (1:r2=0 /\ 1:r1=1) 24 | -------------------------------------------------------------------------------- /auto/C-LB-Lwr+R-D.litmus: -------------------------------------------------------------------------------- 1 | C auto/C-LB-Lwr+R-D 2 | (* 3 | * Result: Sometimes DATARACE 4 | * P1 D,Lwr: Never->Sometimes: No ordering 5 | *) 6 | { 7 | } 8 | 9 | P0(intptr_t *u0, intptr_t *x1) 10 | { 11 | *u0 = 3; 12 | smp_store_release(x1, 1); 13 | } 14 | 15 | 16 | P1(intptr_t *u0, intptr_t *x1) 17 | { 18 | intptr_t r1 = (intptr_t)rcu_dereference(*(intptr_t **)x1); 19 | intptr_t r2 = *u0; 20 | } 21 | 22 | exists 23 | (1:r2=0 /\ 1:r1=1) 24 | -------------------------------------------------------------------------------- /auto/C-LB-Lwr+R-OC.litmus: -------------------------------------------------------------------------------- 1 | C auto/C-LB-Lwr+R-OC 2 | (* 3 | * Result: Never 4 | * 5 | *) 6 | { 7 | } 8 | 9 | P0(intptr_t *u0, intptr_t *x1) 10 | { 11 | *u0 = 3; 12 | smp_store_release(x1, 1); 13 | } 14 | 15 | 16 | P1(intptr_t *u0, intptr_t *x1) 17 | { 18 | intptr_t r4=1; 19 | 20 | intptr_t r1 = READ_ONCE(*x1); 21 | r4 = (r1 == r4); 22 | if (r4) { 23 | smp_rmb(); 24 | intptr_t r2 = *u0; 25 | } 26 | } 27 | 28 | exists 29 | (1:r2=0 /\ 1:r1=1) 30 | -------------------------------------------------------------------------------- /auto/C-LB-Lwr+R-Oc.litmus: -------------------------------------------------------------------------------- 1 | C auto/C-LB-Lwr+R-Oc 2 | (* 3 | * Result: Sometimes DATARACE 4 | * P1 Oc,Lwr: Never->Sometimes: Control dependencies do not order trailing reads 5 | *) 6 | { 7 | } 8 | 9 | P0(intptr_t *u0, intptr_t *x1) 10 | { 11 | *u0 = 3; 12 | smp_store_release(x1, 1); 13 | } 14 | 15 | 16 | P1(intptr_t *u0, intptr_t *x1) 17 | { 18 | intptr_t r4=1; 19 | 20 | intptr_t r1 = READ_ONCE(*x1); 21 | r4 = (r1 == r4); 22 | if (r4) { 23 | intptr_t r2 = *u0; 24 | } 25 | } 26 | 27 | exists 28 | (1:r2=0 /\ 1:r1=1) 29 | -------------------------------------------------------------------------------- /auto/C-LB-Lwr+R-Od.litmus: -------------------------------------------------------------------------------- 1 | C auto/C-LB-Lwr+R-Od 2 | (* 3 | * Result: Never 4 | * 5 | *) 6 | { 7 | x1=y1; 8 | } 9 | 10 | P0(intptr_t *u0, intptr_t *x1) 11 | { 12 | intptr_t r3=u0; 13 | 14 | *u0 = 3; 15 | smp_store_release(x1, r3); 16 | } 17 | 18 | 19 | P1(intptr_t *x1) 20 | { 21 | intptr_t r1 = READ_ONCE(*x1); 22 | intptr_t r2 = *(intptr_t *)r1; 23 | } 24 | 25 | exists 26 | (1:r2=0 /\ 1:r1=u0) 27 | -------------------------------------------------------------------------------- /auto/C-LB-Lww+R-A+R-A.litmus: -------------------------------------------------------------------------------- 1 | C auto/C-LB-Lww+R-A+R-A 2 | (* 3 | * Result: Never DATARACE 4 | * 5 | *) 6 | { 7 | } 8 | 9 | P0(intptr_t *u0, intptr_t *x1) 10 | { 11 | *u0 = 3; 12 | smp_store_release(x1, 1); 13 | } 14 | 15 | 16 | P1(intptr_t *x1, intptr_t *x2) 17 | { 18 | intptr_t r1 = smp_load_acquire(x1); 19 | smp_store_release(x2, 1); 20 | } 21 | 22 | 23 | P2(intptr_t *x2, intptr_t *u0) 24 | { 25 | intptr_t r1 = smp_load_acquire(x2); 26 | *u0 = 1; 27 | } 28 | 29 | exists 30 | (u0=3 /\ 1:r1=1 /\ 2:r1=1) 31 | -------------------------------------------------------------------------------- /auto/C-LB-Lww+R-A+R-D.litmus: -------------------------------------------------------------------------------- 1 | C auto/C-LB-Lww+R-A+R-D 2 | (* 3 | * Result: Sometimes DATARACE 4 | * P2 D,Lww: Never->Sometimes: No ordering 5 | *) 6 | { 7 | } 8 | 9 | P0(intptr_t *u0, intptr_t *x1) 10 | { 11 | *u0 = 3; 12 | smp_store_release(x1, 1); 13 | } 14 | 15 | 16 | P1(intptr_t *x1, intptr_t *x2) 17 | { 18 | intptr_t r1 = smp_load_acquire(x1); 19 | smp_store_release(x2, 1); 20 | } 21 | 22 | 23 | P2(intptr_t *x2, intptr_t *u0) 24 | { 25 | intptr_t r1 = (intptr_t)rcu_dereference(*(intptr_t **)x2); 26 | *u0 = 1; 27 | } 28 | 29 | exists 30 | (u0=3 /\ 1:r1=1 /\ 2:r1=1) 31 | -------------------------------------------------------------------------------- /auto/C-LB-Lww+R-A+R-Oc.litmus: -------------------------------------------------------------------------------- 1 | C auto/C-LB-Lww+R-A+R-Oc 2 | (* 3 | * Result: Never DATARACE 4 | * 5 | *) 6 | { 7 | } 8 | 9 | P0(intptr_t *u0, intptr_t *x1) 10 | { 11 | *u0 = 3; 12 | smp_store_release(x1, 1); 13 | } 14 | 15 | 16 | P1(intptr_t *x1, intptr_t *x2) 17 | { 18 | intptr_t r1 = smp_load_acquire(x1); 19 | smp_store_release(x2, 1); 20 | } 21 | 22 | 23 | P2(intptr_t *x2, intptr_t *u0) 24 | { 25 | intptr_t r4=1; 26 | 27 | intptr_t r1 = READ_ONCE(*x2); 28 | r4 = (r1 == r4); 29 | if (r4) { 30 | *u0 = 1; 31 | } 32 | } 33 | 34 | exists 35 | (u0=3 /\ 1:r1=1 /\ 2:r1=1) 36 | -------------------------------------------------------------------------------- /auto/C-LB-Lww+R-A+R-Od.litmus: -------------------------------------------------------------------------------- 1 | C auto/C-LB-Lww+R-A+R-Od 2 | (* 3 | * Result: Never DATARACE 4 | * 5 | *) 6 | { 7 | x2=y2; 8 | } 9 | 10 | P0(intptr_t *u0, intptr_t *x1) 11 | { 12 | *u0 = 3; 13 | smp_store_release(x1, 1); 14 | } 15 | 16 | 17 | P1(intptr_t *u0, intptr_t *x1, intptr_t *x2) 18 | { 19 | intptr_t r3=u0; 20 | 21 | intptr_t r1 = smp_load_acquire(x1); 22 | smp_store_release(x2, r3); 23 | } 24 | 25 | 26 | P2(intptr_t *x2) 27 | { 28 | intptr_t r1 = READ_ONCE(*x2); 29 | *r1 = 1; 30 | } 31 | 32 | exists 33 | (u0=3 /\ 1:r1=1 /\ 2:r1=u0) 34 | -------------------------------------------------------------------------------- /auto/C-LB-Lww+R-A.litmus: -------------------------------------------------------------------------------- 1 | C auto/C-LB-Lww+R-A 2 | (* 3 | * Result: Never DATARACE 4 | * 5 | *) 6 | { 7 | } 8 | 9 | P0(intptr_t *u0, intptr_t *x1) 10 | { 11 | *u0 = 3; 12 | smp_store_release(x1, 1); 13 | } 14 | 15 | 16 | P1(intptr_t *u0, intptr_t *x1) 17 | { 18 | intptr_t r1 = smp_load_acquire(x1); 19 | *u0 = 1; 20 | } 21 | 22 | exists 23 | (u0=3 /\ 1:r1=1) 24 | -------------------------------------------------------------------------------- /auto/C-LB-Lww+R-D.litmus: -------------------------------------------------------------------------------- 1 | C auto/C-LB-Lww+R-D 2 | (* 3 | * Result: Sometimes DATARACE 4 | * P1 D,Lww: Never->Sometimes: No ordering 5 | *) 6 | { 7 | } 8 | 9 | P0(intptr_t *u0, intptr_t *x1) 10 | { 11 | *u0 = 3; 12 | smp_store_release(x1, 1); 13 | } 14 | 15 | 16 | P1(intptr_t *u0, intptr_t *x1) 17 | { 18 | intptr_t r1 = (intptr_t)rcu_dereference(*(intptr_t **)x1); 19 | *u0 = 1; 20 | } 21 | 22 | exists 23 | (u0=3 /\ 1:r1=1) 24 | -------------------------------------------------------------------------------- /auto/C-LB-Lww+R-OC.litmus: -------------------------------------------------------------------------------- 1 | C auto/C-LB-Lww+R-OC 2 | (* 3 | * Result: Never DATARACE 4 | * 5 | *) 6 | { 7 | } 8 | 9 | P0(intptr_t *u0, intptr_t *x1) 10 | { 11 | *u0 = 3; 12 | smp_store_release(x1, 1); 13 | } 14 | 15 | 16 | P1(intptr_t *u0, intptr_t *x1) 17 | { 18 | intptr_t r4=1; 19 | 20 | intptr_t r1 = READ_ONCE(*x1); 21 | r4 = (r1 == r4); 22 | if (r4) { 23 | smp_rmb(); 24 | *u0 = 1; 25 | } 26 | } 27 | 28 | exists 29 | (u0=3 /\ 1:r1=1) 30 | -------------------------------------------------------------------------------- /auto/C-LB-Lww+R-Oc.litmus: -------------------------------------------------------------------------------- 1 | C auto/C-LB-Lww+R-Oc 2 | (* 3 | * Result: Never DATARACE 4 | * 5 | *) 6 | { 7 | } 8 | 9 | P0(intptr_t *u0, intptr_t *x1) 10 | { 11 | *u0 = 3; 12 | smp_store_release(x1, 1); 13 | } 14 | 15 | 16 | P1(intptr_t *u0, intptr_t *x1) 17 | { 18 | intptr_t r4=1; 19 | 20 | intptr_t r1 = READ_ONCE(*x1); 21 | r4 = (r1 == r4); 22 | if (r4) { 23 | *u0 = 1; 24 | } 25 | } 26 | 27 | exists 28 | (u0=3 /\ 1:r1=1) 29 | -------------------------------------------------------------------------------- /auto/C-LB-Lww+R-Od+R-Od.litmus: -------------------------------------------------------------------------------- 1 | C auto/C-LB-Lww+R-Od+R-Od 2 | (* 3 | * Result: Never 4 | * 5 | *) 6 | { 7 | x1=y1; 8 | x2=y2; 9 | } 10 | 11 | P0(intptr_t *u0, intptr_t *x1, intptr_t *x2) 12 | { 13 | intptr_t r3=x2; 14 | 15 | *u0 = 3; 16 | smp_store_release(x1, r3); 17 | } 18 | 19 | 20 | P1(intptr_t *u0, intptr_t *x1) 21 | { 22 | intptr_t r3=u0; 23 | 24 | intptr_t r1 = READ_ONCE(*x1); 25 | smp_store_release((intptr_t *)r1, r3); 26 | } 27 | 28 | 29 | P2(intptr_t *x2) 30 | { 31 | intptr_t r1 = READ_ONCE(*x2); 32 | *r1 = 1; 33 | } 34 | 35 | exists 36 | (u0=3 /\ 1:r1=x2 /\ 2:r1=u0) 37 | -------------------------------------------------------------------------------- /auto/C-LB-Lww+R-Od.litmus: -------------------------------------------------------------------------------- 1 | C auto/C-LB-Lww+R-Od 2 | (* 3 | * Result: Never 4 | * 5 | *) 6 | { 7 | x1=y1; 8 | } 9 | 10 | P0(intptr_t *u0, intptr_t *x1) 11 | { 12 | intptr_t r3=u0; 13 | 14 | *u0 = 3; 15 | smp_store_release(x1, r3); 16 | } 17 | 18 | 19 | P1(intptr_t *x1) 20 | { 21 | intptr_t r1 = READ_ONCE(*x1); 22 | *r1 = 1; 23 | } 24 | 25 | exists 26 | (u0=3 /\ 1:r1=u0) 27 | -------------------------------------------------------------------------------- /auto/C-RR-G.litmus: -------------------------------------------------------------------------------- 1 | C auto/C-RR-G 2 | (* Result: Never *) 3 | { 4 | } 5 | 6 | P0(intptr_t *x0) 7 | { 8 | intptr_t r1 = READ_ONCE(*x0); 9 | synchronize_rcu(); 10 | intptr_t r2 = READ_ONCE(*x0); 11 | } 12 | 13 | 14 | P1(intptr_t *x0) 15 | { 16 | WRITE_ONCE(*x0, 1); 17 | } 18 | 19 | exists 20 | (0:r2=0 /\ 0:r1=1) 21 | -------------------------------------------------------------------------------- /auto/C-RR-R.litmus: -------------------------------------------------------------------------------- 1 | C auto/C-RR-R 2 | (* Result: Never *) 3 | { 4 | } 5 | 6 | P0(intptr_t *x0) 7 | { 8 | rcu_read_lock(); 9 | intptr_t r1 = READ_ONCE(*x0); 10 | intptr_t r2 = READ_ONCE(*x0); 11 | rcu_read_unlock(); 12 | } 13 | 14 | 15 | P1(intptr_t *x0) 16 | { 17 | WRITE_ONCE(*x0, 1); 18 | } 19 | 20 | exists 21 | (0:r2=0 /\ 0:r1=1) 22 | -------------------------------------------------------------------------------- /auto/C-RW-B.litmus: -------------------------------------------------------------------------------- 1 | C auto/C-RW-B 2 | (* Result: Never *) 3 | { 4 | } 5 | 6 | P0(intptr_t *x0) 7 | { 8 | intptr_t r1 = READ_ONCE(*x0); 9 | smp_mb(); 10 | WRITE_ONCE(*x0, 1); 11 | } 12 | 13 | exists 14 | (0:r1=1) 15 | -------------------------------------------------------------------------------- /auto/C-RW-G.litmus: -------------------------------------------------------------------------------- 1 | C auto/C-RW-G 2 | (* Result: Never *) 3 | { 4 | } 5 | 6 | P0(intptr_t *x0) 7 | { 8 | intptr_t r1 = READ_ONCE(*x0); 9 | synchronize_rcu(); 10 | WRITE_ONCE(*x0, 1); 11 | } 12 | 13 | exists 14 | (0:r1=1) 15 | -------------------------------------------------------------------------------- /auto/C-RW-GR+RW-R.litmus: -------------------------------------------------------------------------------- 1 | C auto/C-RW-GR+RW-R 2 | (* 3 | * Result: DEADLOCK 4 | * 5 | * RCU self-deadlock on process 0. 6 | *) 7 | { 8 | } 9 | 10 | P0(intptr_t *x0, intptr_t *x1) 11 | { 12 | rcu_read_lock(); 13 | intptr_t r1 = READ_ONCE(*x0); 14 | synchronize_rcu(); 15 | WRITE_ONCE(*x1, 1); 16 | rcu_read_unlock(); 17 | } 18 | 19 | 20 | P1(intptr_t *x0, intptr_t *x1) 21 | { 22 | rcu_read_lock(); 23 | intptr_t r1 = READ_ONCE(*x1); 24 | WRITE_ONCE(*x0, 1); 25 | rcu_read_unlock(); 26 | } 27 | 28 | exists 29 | (0:r1=1 /\ 1:r1=1) 30 | -------------------------------------------------------------------------------- /auto/C-RW-R.litmus: -------------------------------------------------------------------------------- 1 | C auto/C-RW-R 2 | (* Result: Never *) 3 | { 4 | } 5 | 6 | P0(intptr_t *x0) 7 | { 8 | rcu_read_lock(); 9 | intptr_t r1 = READ_ONCE(*x0); 10 | WRITE_ONCE(*x0, 1); 11 | rcu_read_unlock(); 12 | } 13 | 14 | exists 15 | (0:r1=1) 16 | -------------------------------------------------------------------------------- /auto/C-RW-R1.litmus: -------------------------------------------------------------------------------- 1 | C auto/C-RW-R1 2 | (* Result: Never *) 3 | { 4 | } 5 | 6 | P0(intptr_t *x0) 7 | { 8 | rcu_read_lock(); 9 | intptr_t r1 = READ_ONCE(*x0); 10 | rcu_read_unlock(); 11 | WRITE_ONCE(*x0, 1); 12 | } 13 | 14 | exists 15 | (0:r1=1) 16 | -------------------------------------------------------------------------------- /auto/C-RW-R1I.litmus: -------------------------------------------------------------------------------- 1 | C auto/C-RW-R1I 2 | (* Result: Always *) 3 | { 4 | } 5 | 6 | P0(intptr_t *x0) 7 | { 8 | rcu_read_lock(); 9 | WRITE_ONCE(*x0, 1); 10 | rcu_read_unlock(); 11 | intptr_t r1 = READ_ONCE(*x0); 12 | } 13 | 14 | exists 15 | (0:r1=1) 16 | -------------------------------------------------------------------------------- /auto/C-RW-R2.litmus: -------------------------------------------------------------------------------- 1 | C auto/C-RW-R2 2 | (* Result: Never *) 3 | { 4 | } 5 | 6 | P0(intptr_t *x0) 7 | { 8 | intptr_t r1 = READ_ONCE(*x0); 9 | rcu_read_lock(); 10 | WRITE_ONCE(*x0, 1); 11 | rcu_read_unlock(); 12 | } 13 | 14 | exists 15 | (0:r1=1) 16 | -------------------------------------------------------------------------------- /auto/C-RW-R2I.litmus: -------------------------------------------------------------------------------- 1 | C auto/C-RW-R2I 2 | (* Result: Always *) 3 | { 4 | } 5 | 6 | P0(intptr_t *x0) 7 | { 8 | WRITE_ONCE(*x0, 1); 9 | rcu_read_lock(); 10 | intptr_t r1 = READ_ONCE(*x0); 11 | rcu_read_unlock(); 12 | } 13 | 14 | exists 15 | (0:r1=1) 16 | -------------------------------------------------------------------------------- /auto/C-RW-R3.litmus: -------------------------------------------------------------------------------- 1 | C auto/C-RW-R3 2 | (* Result: Never *) 3 | { 4 | } 5 | 6 | P0(intptr_t *x0) 7 | { 8 | rcu_read_lock(); 9 | intptr_t r1 = READ_ONCE(*x0); 10 | rcu_read_unlock(); 11 | rcu_read_lock(); 12 | WRITE_ONCE(*x0, 1); 13 | rcu_read_unlock(); 14 | } 15 | 16 | exists 17 | (0:r1=1) 18 | -------------------------------------------------------------------------------- /auto/C-RW-R3I.litmus: -------------------------------------------------------------------------------- 1 | C auto/C-RW-R3I 2 | (* Result: Always *) 3 | { 4 | } 5 | 6 | P0(intptr_t *x0) 7 | { 8 | rcu_read_lock(); 9 | WRITE_ONCE(*x0, 1); 10 | rcu_read_unlock(); 11 | rcu_read_lock(); 12 | intptr_t r1 = READ_ONCE(*x0); 13 | rcu_read_unlock(); 14 | } 15 | 16 | exists 17 | (0:r1=1) 18 | -------------------------------------------------------------------------------- /auto/C-RW-RB.litmus: -------------------------------------------------------------------------------- 1 | C auto/C-RW-RB 2 | (* Result: Never *) 3 | { 4 | } 5 | 6 | P0(intptr_t *x0) 7 | { 8 | rcu_read_lock(); 9 | intptr_t r1 = READ_ONCE(*x0); 10 | smp_mb(); 11 | WRITE_ONCE(*x0, 1); 12 | rcu_read_unlock(); 13 | } 14 | 15 | exists 16 | (0:r1=1) 17 | -------------------------------------------------------------------------------- /auto/C-RW-RI.litmus: -------------------------------------------------------------------------------- 1 | C auto/C-RW-RI 2 | (* Result: Always *) 3 | { 4 | } 5 | 6 | P0(intptr_t *x0) 7 | { 8 | rcu_read_lock(); 9 | WRITE_ONCE(*x0, 1); 10 | intptr_t r1 = READ_ONCE(*x0); 11 | rcu_read_unlock(); 12 | } 13 | 14 | exists 15 | (0:r1=1) 16 | -------------------------------------------------------------------------------- /auto/C-WR-G.litmus: -------------------------------------------------------------------------------- 1 | C auto/C-WR-G 2 | (* Result: Never *) 3 | { 4 | } 5 | 6 | P0(intptr_t *x0) 7 | { 8 | WRITE_ONCE(*x0, 2); 9 | synchronize_rcu(); 10 | intptr_t r2 = READ_ONCE(*x0); 11 | } 12 | 13 | exists 14 | (0:r2=0) 15 | -------------------------------------------------------------------------------- /auto/C-WR-GR+WR-R.litmus: -------------------------------------------------------------------------------- 1 | C auto/C-WR-GR+WR-R 2 | (* 3 | * Result: DEADLOCK 4 | * 5 | * RCU self-deadlock on process 0. 6 | *) 7 | { 8 | } 9 | 10 | P0(intptr_t *x0, intptr_t *x1) 11 | { 12 | rcu_read_lock(); 13 | WRITE_ONCE(*x0, 2); 14 | synchronize_rcu(); 15 | intptr_t r2 = READ_ONCE(*x1); 16 | rcu_read_unlock(); 17 | } 18 | 19 | 20 | P1(intptr_t *x0, intptr_t *x1) 21 | { 22 | rcu_read_lock(); 23 | WRITE_ONCE(*x1, 2); 24 | intptr_t r2 = READ_ONCE(*x0); 25 | rcu_read_unlock(); 26 | } 27 | 28 | exists 29 | (1:r2=0 /\ 0:r2=0) 30 | -------------------------------------------------------------------------------- /auto/C-WR-R.litmus: -------------------------------------------------------------------------------- 1 | C auto/C-WR-R 2 | (* Result: Never *) 3 | { 4 | } 5 | 6 | P0(intptr_t *x0) 7 | { 8 | rcu_read_lock(); 9 | WRITE_ONCE(*x0, 2); 10 | intptr_t r2 = READ_ONCE(*x0); 11 | rcu_read_unlock(); 12 | } 13 | 14 | exists 15 | (0:r2=0) 16 | -------------------------------------------------------------------------------- /auto/C-WW-B.litmus: -------------------------------------------------------------------------------- 1 | C auto/C-WW-B 2 | (* Result: Never *) 3 | { 4 | } 5 | 6 | P0(intptr_t *x0) 7 | { 8 | WRITE_ONCE(*x0, 2); 9 | smp_mb(); 10 | WRITE_ONCE(*x0, 1); 11 | } 12 | 13 | exists 14 | (x0=2) 15 | -------------------------------------------------------------------------------- /auto/C-WW-G.litmus: -------------------------------------------------------------------------------- 1 | C auto/C-WW-G 2 | (* Result: Never *) 3 | { 4 | } 5 | 6 | P0(intptr_t *x0) 7 | { 8 | WRITE_ONCE(*x0, 2); 9 | synchronize_rcu(); 10 | WRITE_ONCE(*x0, 1); 11 | } 12 | 13 | exists 14 | (x0=2) 15 | -------------------------------------------------------------------------------- /auto/C-WW-GR+WW-R.litmus: -------------------------------------------------------------------------------- 1 | C auto/C-WW-GR+WW-R 2 | (* 3 | * Result: DEADLOCK 4 | * 5 | * RCU self-deadlock on process 0. 6 | *) 7 | { 8 | } 9 | 10 | P0(intptr_t *x0, intptr_t *x1) 11 | { 12 | rcu_read_lock(); 13 | WRITE_ONCE(*x0, 2); 14 | synchronize_rcu(); 15 | WRITE_ONCE(*x1, 1); 16 | rcu_read_unlock(); 17 | } 18 | 19 | 20 | P1(intptr_t *x0, intptr_t *x1) 21 | { 22 | rcu_read_lock(); 23 | WRITE_ONCE(*x1, 2); 24 | WRITE_ONCE(*x0, 1); 25 | rcu_read_unlock(); 26 | } 27 | 28 | exists 29 | (x0=2 /\ x1=2) 30 | -------------------------------------------------------------------------------- /auto/C-WW-R.litmus: -------------------------------------------------------------------------------- 1 | C auto/C-WW-R 2 | (* Result: Never *) 3 | { 4 | } 5 | 6 | P0(intptr_t *x0) 7 | { 8 | rcu_read_lock(); 9 | WRITE_ONCE(*x0, 2); 10 | WRITE_ONCE(*x0, 1); 11 | rcu_read_unlock(); 12 | } 13 | 14 | exists 15 | (x0=2) 16 | -------------------------------------------------------------------------------- /luc/PaulRelAcqChain/@PPC: -------------------------------------------------------------------------------- 1 | RW-rra+RW-ra+RW-rra+CK-PPC.litmus 2 | RW-rra+RW-ra+RW-rwa+CK-PPC.litmus 3 | RW-rwa+RW-ra+RW-rra+CK-PPC.litmus 4 | RW-rwa+RW-ra+RW-rwa+CK-PPC.litmus 5 | -------------------------------------------------------------------------------- /luc/PaulRelAcqChain/@all: -------------------------------------------------------------------------------- 1 | RW-rra+RW-ra+RW-rra+CK.litmus 2 | RW-rra+RW-ra+RW-rwa+CK.litmus 3 | RW-rwa+RW-ra+RW-rra+CK.litmus 4 | RW-rwa+RW-ra+RW-rwa+CK.litmus 5 | -------------------------------------------------------------------------------- /luc/PaulRelAcqChain/k.txt: -------------------------------------------------------------------------------- 1 | RW-rra+RW-ra+RW-rra+CK ??? 2 | RW-rra+RW-ra+RW-rwa+CK ??? 3 | RW-rwa+RW-ra+RW-rra+CK Allow 4 | RW-rwa+RW-ra+RW-rwa+CK ??? 5 | 6 | -------------------------------------------------------------------------------- /luc/PaulRelAcqChain/ppc.txt: -------------------------------------------------------------------------------- 1 | RW-rra+RW-ra+RW-rra+CK-PPC ??? 2 | RW-rra+RW-ra+RW-rwa+CK-PPC Forbid 3 | RW-rwa+RW-ra+RW-rra+CK-PPC Allow 4 | RW-rwa+RW-ra+RW-rwa+CK-PPC Forbid 5 | 6 | -------------------------------------------------------------------------------- /luc/RelAcq/@causal: -------------------------------------------------------------------------------- 1 | ## 2 | WRC+pooncerelease+poacquireonce+Once.litmus 3 | ## 4 | ISA2+pooncerelease+poacquireonce+poacquireonce.litmus 5 | ISA2+pooncerelease+pooncerelease+poacquireonce.litmus 6 | ## 7 | 3.LB+poacquireonces.litmus 8 | 3.LB+pooncereleases.litmus 9 | 3.LB+poacquireonce+poacquireonce+pooncerelease.litmus 10 | -------------------------------------------------------------------------------- /luc/RelAcq/X.conf: -------------------------------------------------------------------------------- 1 | -bell ../models/linux.bell 2 | -nprocs 4 3 | -size 6 4 | -mode critical 5 | -num false 6 | -safe RfeOnceOnce FreOnceOnce WseOnceOnce FenceMbd**OnceOnce DpCtrldWOnceOnce PodWWReleaseRelease PodWRReleaseAcquire PodW*ReleaseOnce PodRWAcquireRelease PodRRAcquireAcquire PodR*AcquireOnce Pod*WOnceRelease Pod*ROnceAcquire Pod**OnceOnce 7 | -relax RfeReleaseAcquire FreAcquireRelease WseReleaseRelease RfeReleaseOnce RfeOnceAcquire FreAcquireOnce FreOnceRelease WseReleaseOnce WseOnceRelease 8 | -mix true 9 | -------------------------------------------------------------------------------- /luc/WeakFence/@two: -------------------------------------------------------------------------------- 1 | 2+2w+fencewmbonceonces.litmus 2 | 2+2w+wmbs+OBS.litmus 3 | mp+fencewmbonceonce+fencermbonceonce.litmus 4 | r+fencewmbonceonce+fencembonceonce.litmus 5 | s+fencewmbonceonce+fencembonceonce.litmus 6 | -------------------------------------------------------------------------------- /luc/WeakFence/C-2+2w+wmbs+OBS.litmus: -------------------------------------------------------------------------------- 1 | C C-2+2w+wmbs+OBS 2 | "FenceWmbdWWOnceOnce WseOnceOnce FenceWmbdWWOnceOnce WseOnceOnce" 3 | Prefetch=0:x=F,0:y=W,1:y=F,1:x=W 4 | Com=Ws Ws 5 | Orig=FenceWmbdWWOnceOnce WseOnceOnce FenceWmbdWWOnceOnce WseOnceOnce 6 | { 7 | } 8 | 9 | P0(int *x, int *y) 10 | { 11 | WRITE_ONCE(*x, 2); 12 | smp_wmb(); 13 | WRITE_ONCE(*y, 1); 14 | r0 = READ_ONCE(*y); 15 | } 16 | 17 | P1(int *y, int *x) 18 | { 19 | WRITE_ONCE(*y, 2); 20 | smp_wmb(); 21 | WRITE_ONCE(*x, 1); 22 | r0 = READ_ONCE(*x); 23 | } 24 | 25 | exists 26 | (0:r0=2 /\ 1:r0=2) 27 | -------------------------------------------------------------------------------- /luc/WeakFence/X.conf: -------------------------------------------------------------------------------- 1 | -bell ../models/linux.bell 2 | -safe FenceMbdWR,FenceMbdRW,FreOnceOnce,RfeOnceOnce,WseOnceOnce 3 | -relax FenceWmbdWW,FenceRmbdRR 4 | -mix true 5 | -size 6 6 | -num false 7 | -lowercase true 8 | -------------------------------------------------------------------------------- /manual/absperf/C-SB+l-o-o-u+l-o-o-u-C.litmus: -------------------------------------------------------------------------------- 1 | C C-SB+l-o-o-u+l-o-o-u-C 2 | 3 | { 4 | } 5 | 6 | P0(int *sl, int *x0, int *x1) 7 | { 8 | int r2; 9 | int r1; 10 | 11 | r2 = cmpxchg_acquire(sl, 0, 1); 12 | WRITE_ONCE(*x0, 1); 13 | r1 = READ_ONCE(*x1); 14 | smp_store_release(sl, 0); 15 | } 16 | 17 | P1(int *sl, int *x0, int *x1) 18 | { 19 | int r2; 20 | int r1; 21 | 22 | r2 = cmpxchg_acquire(sl, 0, 1); 23 | WRITE_ONCE(*x1, 1); 24 | r1 = READ_ONCE(*x0); 25 | smp_store_release(sl, 0); 26 | } 27 | 28 | filter (0:r2=0 /\ 1:r2=0) 29 | exists (0:r1=0 /\ 1:r1=0) 30 | -------------------------------------------------------------------------------- /manual/absperf/C-SB+l-o-o-u+l-o-o-u-CE.litmus: -------------------------------------------------------------------------------- 1 | C C-SB+l-o-o-u+l-o-o-u-CE 2 | 3 | { 4 | } 5 | 6 | P0(int *sl, int *x0, int *x1) 7 | { 8 | int r2; 9 | int r1; 10 | 11 | r2 = cmpxchg_acquire(sl, 0, 1); 12 | WRITE_ONCE(*x0, 1); 13 | r1 = READ_ONCE(*x1); 14 | smp_store_release(sl, 0); 15 | } 16 | 17 | P1(int *sl, int *x0, int *x1) 18 | { 19 | int r2; 20 | int r1; 21 | 22 | r2 = cmpxchg_acquire(sl, 0, 1); 23 | WRITE_ONCE(*x1, 1); 24 | r1 = READ_ONCE(*x0); 25 | smp_store_release(sl, 0); 26 | } 27 | 28 | exists (0:r1=0 /\ 0:r2=0 /\ 1:r1=0 /\ 1:r2=0) 29 | -------------------------------------------------------------------------------- /manual/absperf/C-SB+l-o-o-u+l-o-o-u-X.litmus: -------------------------------------------------------------------------------- 1 | C C-SB+l-o-o-u+l-o-o-u-X 2 | 3 | { 4 | } 5 | 6 | P0(int *sl, int *x0, int *x1) 7 | { 8 | int r2; 9 | int r1; 10 | 11 | r2 = xchg_acquire(sl, 1); 12 | WRITE_ONCE(*x0, 1); 13 | r1 = READ_ONCE(*x1); 14 | smp_store_release(sl, 0); 15 | } 16 | 17 | P1(int *sl, int *x0, int *x1) 18 | { 19 | int r2; 20 | int r1; 21 | 22 | r2 = xchg_acquire(sl, 1); 23 | WRITE_ONCE(*x1, 1); 24 | r1 = READ_ONCE(*x0); 25 | smp_store_release(sl, 0); 26 | } 27 | 28 | filter (0:r2=0 /\ 1:r2=0) 29 | exists (0:r1=0 /\ 1:r1=0) 30 | -------------------------------------------------------------------------------- /manual/absperf/C-SB+l-o-o-u+l-o-o-u-XE.litmus: -------------------------------------------------------------------------------- 1 | C C-SB+l-o-o-u+l-o-o-u-XE 2 | 3 | { 4 | } 5 | 6 | P0(int *sl, int *x0, int *x1) 7 | { 8 | int r2; 9 | int r1; 10 | 11 | r2 = xchg_acquire(sl, 1); 12 | WRITE_ONCE(*x0, 1); 13 | r1 = READ_ONCE(*x1); 14 | smp_store_release(sl, 0); 15 | } 16 | 17 | P1(int *sl, int *x0, int *x1) 18 | { 19 | int r2; 20 | int r1; 21 | 22 | r2 = xchg_acquire(sl, 1); 23 | WRITE_ONCE(*x1, 1); 24 | r1 = READ_ONCE(*x0); 25 | smp_store_release(sl, 0); 26 | } 27 | 28 | exists (0:r1=0 /\ 0:r2=0 /\ 1:r1=0 /\ 1:r2=0) 29 | -------------------------------------------------------------------------------- /manual/absperf/C-SB+l-o-o-u+l-o-o-u.litmus: -------------------------------------------------------------------------------- 1 | C C-SB+l-o-o-u+l-o-o-u 2 | 3 | { 4 | } 5 | 6 | P0(spinlock_t *sl, int *x0, int *x1) 7 | { 8 | int r1; 9 | 10 | spin_lock(sl); 11 | WRITE_ONCE(*x0, 1); 12 | r1 = READ_ONCE(*x1); 13 | spin_unlock(sl); 14 | } 15 | 16 | P1(spinlock_t *sl, int *x0, int *x1) 17 | { 18 | int r1; 19 | 20 | spin_lock(sl); 21 | WRITE_ONCE(*x1, 1); 22 | r1 = READ_ONCE(*x0); 23 | spin_unlock(sl); 24 | } 25 | 26 | exists (0:r1=0 /\ 1:r1=0) 27 | -------------------------------------------------------------------------------- /manual/atomic/C-AlanStern-Atomic1.litmus: -------------------------------------------------------------------------------- 1 | C atomic_dec_and_test-is-atomic 2 | 3 | (* Expected result: never. *) 4 | 5 | { 6 | atomic_t x = ATOMIC_INIT(2); 7 | int 0:r1; 8 | int 1:r2; 9 | } 10 | 11 | P0(atomic_t *x) 12 | { 13 | int r1; 14 | 15 | r1 = atomic_dec_and_test(x); 16 | } 17 | 18 | P1(atomic_t *x) 19 | { 20 | int r2; 21 | 22 | r2 = atomic_dec_and_test(x); 23 | } 24 | 25 | exists (x!=0 \/ 0:r1=1:r2) 26 | -------------------------------------------------------------------------------- /manual/atomic/C-atomic-00.litmus: -------------------------------------------------------------------------------- 1 | C C-atomic-00 2 | (* Allowed, as atomic_inc does not return a value *) 3 | { 4 | atomic_t x = ATOMIC_INIT(0); 5 | atomic_t y = ATOMIC_INIT(0); 6 | } 7 | 8 | 9 | P0(atomic_t *x,atomic_t *y) { 10 | int r0; 11 | atomic_inc(x) ; 12 | r0 = atomic_read(y); 13 | } 14 | 15 | P1(atomic_t *x,atomic_t *y) { 16 | int r1; 17 | atomic_inc(y) ; 18 | r1 = atomic_read(x); 19 | } 20 | 21 | P2(atomic_t *x,atomic_t *y) { 22 | atomic_add(2,x) ; 23 | atomic_add(2,y) ; 24 | } 25 | 26 | locations [x;y;] 27 | 28 | exists (0:r0 = 0 /\ 1:r1 = 0) 29 | -------------------------------------------------------------------------------- /manual/atomic/C-atomic-02.litmus: -------------------------------------------------------------------------------- 1 | C C-atomic-02 2 | 3 | (* Forbid, use cmpxcchg as a write, NB: no spurious failure. *) 4 | { 5 | atomic_t x = ATOMIC_INIT(0); 6 | atomic_t y = ATOMIC_INIT(0); 7 | } 8 | 9 | 10 | P0(atomic_t *x,atomic_t *y) { 11 | int r0; int r1; 12 | r0 = atomic_cmpxchg(x,0,1) ; 13 | r1 = atomic_read(y); 14 | } 15 | 16 | P1(atomic_t *x,atomic_t *y) { 17 | int r0; int r1; 18 | r0 = atomic_cmpxchg(y,0,1) ; 19 | r1 = atomic_read(x); 20 | } 21 | 22 | locations [x;y;] 23 | 24 | exists (0:r1 = 0 /\ 1:r1 = 0) \/ x=0 \/ y=0 25 | -------------------------------------------------------------------------------- /manual/atomic/C-atomic-03.litmus: -------------------------------------------------------------------------------- 1 | C C-atomic-03 2 | (* Always, basic property of atomic_cmpxchg *) 3 | { 4 | atomic_t x = ATOMIC_INIT(0); 5 | } 6 | 7 | 8 | P0(atomic_t *x) { 9 | int r0 = atomic_cmpxchg(x,0,1) ; 10 | } 11 | 12 | P1(atomic_t *x) { 13 | int r0 = atomic_cmpxchg(x,0,2) ; 14 | } 15 | 16 | forall (0:r0=0 /\ 1:r0=1 /\ x=1) \/ (0:r0=2 /\ 1:r0=0 /\ x=2) 17 | -------------------------------------------------------------------------------- /manual/atomic/C-atomic-04.litmus: -------------------------------------------------------------------------------- 1 | C C-atomic-04 2 | (* Always, semantics of atomic_add_unless *) 3 | { 4 | atomic_t x = ATOMIC_INIT(0); 5 | } 6 | 7 | 8 | P0(atomic_t *x) { 9 | int r0; 10 | r0 = atomic_add_unless(x,10,10); 11 | } 12 | 13 | P1(atomic_t *x) { 14 | int r1; int r2; 15 | r1 = atomic_add_unless(x,5,10); 16 | r2 = atomic_add_unless(x,5,10); 17 | } 18 | 19 | forall 20 | (0:r0=0 /\ 1:r1=1 /\ 1:r2=1 /\ x=10) \/ 21 | (0:r0=1 /\ 1:r1=0 /\ 1:r2=0 /\ x=10) \/ 22 | (0:r0=1 /\ 1:r1=1 /\ 1:r2=1 /\ x=20) 23 | -------------------------------------------------------------------------------- /manual/atomic/C-lock-write1.litmus: -------------------------------------------------------------------------------- 1 | C lock-write1 2 | 3 | (* Expected result: forbidden *) 4 | 5 | { 6 | } 7 | 8 | P0(int *x, spinlock_t *s) 9 | { 10 | WRITE_ONCE(*x, 1); 11 | smp_wmb(); 12 | spin_lock(s); 13 | spin_unlock(s); 14 | } 15 | 16 | P1(int *x, spinlock_t *s) 17 | { 18 | int r0; 19 | int r1; 20 | 21 | r0 = spin_trylock(s); 22 | smp_rmb(); 23 | r1 = READ_ONCE(*x); 24 | if (r0) 25 | spin_unlock(s); 26 | } 27 | 28 | exists (1:r0=0 /\ 1:r1=0) 29 | -------------------------------------------------------------------------------- /manual/atomic/C-lock-write2.litmus: -------------------------------------------------------------------------------- 1 | C lock-write2 2 | 3 | (* Expected result: allowed *) 4 | 5 | { 6 | } 7 | 8 | P0(int *x, int *y, spinlock_t *s) 9 | { 10 | int r0; 11 | 12 | WRITE_ONCE(*x, 1); 13 | smp_wmb(); 14 | spin_lock(s); 15 | r0 = READ_ONCE(*y); 16 | spin_unlock(s); 17 | } 18 | 19 | P1(int *x, int *y) 20 | { 21 | int r1; 22 | 23 | WRITE_ONCE(*y, 1); 24 | smp_mb(); 25 | r1 = READ_ONCE(*x); 26 | } 27 | 28 | exists (0:r0=0 /\ 1:r1=0) 29 | -------------------------------------------------------------------------------- /manual/atomic/C-lock2.litmus: -------------------------------------------------------------------------------- 1 | C C-lock2 2 | 3 | (* Basic mutual exclusion, Expected result: forbidden *) 4 | 5 | { 6 | } 7 | 8 | P0(int *x, spinlock_t *s) 9 | { 10 | spin_lock(s); 11 | WRITE_ONCE(*x,READ_ONCE(*x)+1); 12 | spin_unlock(s); 13 | } 14 | 15 | P1(int *x, spinlock_t *s) 16 | { 17 | spin_lock(s); 18 | WRITE_ONCE(*x,READ_ONCE(*x)+1); 19 | spin_unlock(s); 20 | } 21 | 22 | locations [x;] 23 | exists (x=1) 24 | -------------------------------------------------------------------------------- /manual/atomic/C-noatomic-03.litmus: -------------------------------------------------------------------------------- 1 | C C-noatomic-03 2 | (* Always, basic property of cmpxchg *) 3 | { 4 | 5 | } 6 | 7 | 8 | P0(int *x) { 9 | int r0 = cmpxchg(x,0,1) ; 10 | } 11 | 12 | P1(int *x) { 13 | int r0 = cmpxchg(x,0,2) ; 14 | } 15 | 16 | forall (0:r0=0 /\ 1:r0=1 /\ x=1) \/ (0:r0=2 /\ 1:r0=0 /\ x=2) 17 | -------------------------------------------------------------------------------- /manual/atomic/C-trylock2.litmus: -------------------------------------------------------------------------------- 1 | C C-trylock2 2 | 3 | (* Expected result: allowed *) 4 | 5 | { 6 | } 7 | 8 | P0(int *x, spinlock_t *s) 9 | { 10 | int r0; 11 | int r1; 12 | 13 | r0 = spin_trylock(s); 14 | if (r0) { 15 | WRITE_ONCE(*x,READ_ONCE(*x)+1); 16 | spin_unlock(s); 17 | } 18 | } 19 | 20 | P1(int *x, spinlock_t *s) 21 | { 22 | int r0; 23 | int r1; 24 | 25 | r0 = spin_trylock(s); 26 | if (r0) { 27 | WRITE_ONCE(*x,READ_ONCE(*x)+1); 28 | spin_unlock(s); 29 | } 30 | } 31 | 32 | locations [x;] 33 | exists (x=1) 34 | -------------------------------------------------------------------------------- /manual/atomic/C-xchg-lock-write1.litmus: -------------------------------------------------------------------------------- 1 | C xchg-lock-write1 2 | 3 | (* Expected result: forbidden *) 4 | 5 | { 6 | int x; 7 | int s; 8 | } 9 | 10 | P0(int *x, int *s) 11 | { 12 | int rlock; 13 | 14 | WRITE_ONCE(*x, 1); 15 | smp_wmb(); 16 | rlock = xchg_acquire(s, 1); 17 | smp_store_release(s, 0); 18 | } 19 | 20 | P1(int *x, int *s) 21 | { 22 | int r0; 23 | int r1; 24 | 25 | r0 = xchg_acquire(s, 1); 26 | smp_rmb(); 27 | r1 = READ_ONCE(*x); 28 | if (r0 == 0) 29 | smp_store_release(s, 0); 30 | } 31 | 32 | filter (0:rlock=0) 33 | exists (1:r0=1 /\ 1:r1=0) 34 | -------------------------------------------------------------------------------- /manual/demo/C-2+2W+o-wmb-o+o-wmb-o.litmus: -------------------------------------------------------------------------------- 1 | C C-2+2W+o-wmb-o+o-wmb-o.litmus 2 | 3 | { 4 | } 5 | 6 | P0(int *a, int *b) 7 | { 8 | WRITE_ONCE(*a, 2); 9 | smp_wmb(); 10 | WRITE_ONCE(*b, 1); 11 | } 12 | 13 | P1(int *a, int *b) 14 | { 15 | WRITE_ONCE(*b, 2); 16 | smp_wmb(); 17 | WRITE_ONCE(*a, 1); 18 | } 19 | 20 | exists 21 | (b=2 /\ a=2) 22 | -------------------------------------------------------------------------------- /manual/demo/C-3+2W+o-wmb-o+o-wmb-o+o-wmb-o.litmus: -------------------------------------------------------------------------------- 1 | C C-3+2W+o-wmb-o+o-wmb-o+o-wmb-o.litmus 2 | 3 | { 4 | } 5 | 6 | P0(int *a, int *b) 7 | { 8 | WRITE_ONCE(*a, 2); 9 | smp_wmb(); 10 | WRITE_ONCE(*b, 1); 11 | } 12 | 13 | P1(int *b, int *c) 14 | { 15 | WRITE_ONCE(*b, 2); 16 | smp_wmb(); 17 | WRITE_ONCE(*c, 1); 18 | } 19 | 20 | P2(int *c, int *a) 21 | { 22 | WRITE_ONCE(*c, 2); 23 | smp_wmb(); 24 | WRITE_ONCE(*a, 1); 25 | } 26 | 27 | exists 28 | (a=2 /\ b=2 /\ c=2) 29 | -------------------------------------------------------------------------------- /manual/demo/C-3.SB+o-mb-o+o-mb-o+o-mb-o.litmus: -------------------------------------------------------------------------------- 1 | C C-3.SB+o-mb-o+o-mb-o+o-mb-o.litmus 2 | 3 | { 4 | } 5 | 6 | P0(int *x, int *y) 7 | { 8 | int r1; 9 | 10 | WRITE_ONCE(*x, 1); 11 | smp_mb(); 12 | r1 = READ_ONCE(*y); 13 | } 14 | 15 | P1(int *y, int *z) 16 | { 17 | int r2; 18 | 19 | WRITE_ONCE(*y, 1); 20 | smp_mb(); 21 | r2 = READ_ONCE(*z); 22 | } 23 | 24 | P2(int *z, int *x) 25 | { 26 | int r2; 27 | 28 | WRITE_ONCE(*z, 1); 29 | smp_mb(); 30 | r2 = READ_ONCE(*x); 31 | } 32 | 33 | exists 34 | (0:r1=0 /\ 1:r2=0 /\ 2:r2=0) 35 | -------------------------------------------------------------------------------- /manual/demo/C-3.SB+o-o+o-mb-o+o-mb-o.litmus: -------------------------------------------------------------------------------- 1 | C C-3.SB+o-o+o-mb-o+o-mb-o.litmus 2 | 3 | { 4 | } 5 | 6 | P0(int *x, int *y) 7 | { 8 | int r1; 9 | 10 | WRITE_ONCE(*x, 1); 11 | r1 = READ_ONCE(*y); 12 | } 13 | 14 | P1(int *y, int *z) 15 | { 16 | int r2; 17 | 18 | WRITE_ONCE(*y, 1); 19 | smp_mb(); 20 | r2 = READ_ONCE(*z); 21 | } 22 | 23 | P2(int *z, int *x) 24 | { 25 | int r2; 26 | 27 | WRITE_ONCE(*z, 1); 28 | smp_mb(); 29 | r2 = READ_ONCE(*x); 30 | } 31 | 32 | exists 33 | (0:r1=0 /\ 1:r2=0 /\ 2:r2=0) 34 | -------------------------------------------------------------------------------- /manual/demo/C-CO+o-o+o-o.litmus: -------------------------------------------------------------------------------- 1 | C C-CO+o-o+o-o.litmus 2 | 3 | { 4 | } 5 | 6 | P0(int *x) 7 | { 8 | WRITE_ONCE(*x, 3); 9 | WRITE_ONCE(*x, 4); 10 | } 11 | 12 | P1(int *x) 13 | { 14 | int r1; 15 | int r2; 16 | 17 | r1 = READ_ONCE(*x); 18 | r2 = READ_ONCE(*x); 19 | } 20 | 21 | exists 22 | (1:r1=4 /\ 1:r2=3) 23 | -------------------------------------------------------------------------------- /manual/demo/C-CO+o-o.litmus: -------------------------------------------------------------------------------- 1 | C C-CO+o-o.litmus 2 | 3 | { 4 | } 5 | 6 | P0(int *x) 7 | { 8 | *x = 3; 9 | *x = 4; 10 | } 11 | 12 | exists 13 | (x=3) 14 | -------------------------------------------------------------------------------- /manual/demo/C-FR+w+w+w+reads.litmus: -------------------------------------------------------------------------------- 1 | C C-FR+w+w+w+reads.litmus 2 | 3 | { 4 | a=0; 5 | } 6 | 7 | P0(int *a) 8 | { 9 | WRITE_ONCE(*a, 1); 10 | } 11 | 12 | P1(int *a) 13 | { 14 | WRITE_ONCE(*a, 2); 15 | } 16 | 17 | P2(int *a) 18 | { 19 | WRITE_ONCE(*a, 3); 20 | } 21 | 22 | P3(int *a) 23 | { 24 | r1 = READ_ONCE(*a); 25 | r2 = READ_ONCE(*a); 26 | r3 = READ_ONCE(*a); 27 | r4 = READ_ONCE(*a); 28 | } 29 | 30 | exists 31 | (3:r1=0 /\ 3:r2=1 /\ 3:r3=2 /\ 3:r4=3) 32 | -------------------------------------------------------------------------------- /manual/demo/C-IRIW+o+o+o-mb-o+o-mb-o.litmus: -------------------------------------------------------------------------------- 1 | C C-IRIW+o+o+o-mb-o+o-mb-o.litmus 2 | 3 | { 4 | } 5 | 6 | P0(int *x) 7 | { 8 | WRITE_ONCE(*x, 1); 9 | } 10 | 11 | P1(int *y) 12 | { 13 | WRITE_ONCE(*y, 1); 14 | } 15 | 16 | P2(int *x, int *y) 17 | { 18 | int r1; 19 | int r2; 20 | 21 | r1 = READ_ONCE(*x); 22 | smp_mb(); 23 | r2 = READ_ONCE(*y); 24 | } 25 | 26 | P3(int *x, int *y) 27 | { 28 | int r1; 29 | int r2; 30 | 31 | r1 = READ_ONCE(*y); 32 | smp_mb(); 33 | r2 = READ_ONCE(*x); 34 | } 35 | 36 | exists 37 | (2:r1=1 /\ 2:r2=0 /\ 3:r1=1 /\ 3:r2=0) 38 | -------------------------------------------------------------------------------- /manual/demo/C-IRIW+rel+rel+acq-o+acq-o.litmus: -------------------------------------------------------------------------------- 1 | C C-IRIW+rel+rel+acq-o+acq-o.litmus 2 | 3 | { 4 | } 5 | 6 | P0(int *x) 7 | { 8 | smp_store_release(x, 1); 9 | } 10 | 11 | P1(int *y) 12 | { 13 | smp_store_release(y, 1); 14 | } 15 | 16 | P2(int *x, int *y) 17 | { 18 | int r1; 19 | int r2; 20 | 21 | r1 = smp_load_acquire(x); 22 | r2 = READ_ONCE(*y); 23 | } 24 | 25 | P3(int *x, int *y) 26 | { 27 | int r1; 28 | int r2; 29 | 30 | r1 = smp_load_acquire(y); 31 | r2 = READ_ONCE(*x); 32 | } 33 | 34 | exists 35 | (2:r1=1 /\ 2:r2=0 /\ 3:r1=1 /\ 3:r2=0) 36 | -------------------------------------------------------------------------------- /manual/demo/C-ISA2+o-rel+acq-rel+acq-o.litmus: -------------------------------------------------------------------------------- 1 | C C-ISA2+o-rel+acq-rel+acq-o.litmus 2 | 3 | { 4 | } 5 | 6 | P0(int *a, int *b) 7 | { 8 | WRITE_ONCE(*a, 1); 9 | smp_store_release(b, 1); 10 | } 11 | 12 | P1(int *b, int *c) 13 | { 14 | int r1; 15 | 16 | r1 = smp_load_acquire(b); 17 | smp_store_release(c, 1); 18 | } 19 | 20 | P2(int *c, int *a) 21 | { 22 | int r2; 23 | int r3; 24 | 25 | r2 = smp_load_acquire(c); 26 | r3 = READ_ONCE(*a); 27 | } 28 | 29 | exists 30 | (1:r1=1 /\ 2:r2=1 /\ 2:r3=0) 31 | -------------------------------------------------------------------------------- /manual/demo/C-LB+acq-o+acq-o+acq-o.litmus: -------------------------------------------------------------------------------- 1 | C C-LB+acq-o+acq-o+acq-o.litmus 2 | 3 | { 4 | } 5 | 6 | P0(int *a, int *b) 7 | { 8 | int *r1; 9 | 10 | r1 = smp_load_acquire(a); 11 | WRITE_ONCE(*b, 1); 12 | } 13 | 14 | P1(int *b, int *c) 15 | { 16 | int r1; 17 | 18 | r1 = smp_load_acquire(b); 19 | WRITE_ONCE(*c, 1); 20 | } 21 | 22 | P2(int *a, int *c) 23 | { 24 | int r1; 25 | 26 | r1 = smp_load_acquire(c); 27 | WRITE_ONCE(*a, 1); 28 | } 29 | 30 | exists 31 | (0:r1=1 /\ 1:r1=1 /\ 2:r1=1) 32 | -------------------------------------------------------------------------------- /manual/demo/C-LB+ldref-o+acq-o+o-dep-o.litmus: -------------------------------------------------------------------------------- 1 | C C-LB+ldref-o+acq-o+o-dep-o.litmus 2 | 3 | { 4 | a=x0; 5 | c=y0; 6 | 1:r2=b; 7 | } 8 | 9 | P0(int **a) 10 | { 11 | int *r1; 12 | 13 | r1 = READ_ONCE(*a); 14 | WRITE_ONCE(*r1, 1); 15 | } 16 | 17 | P1(int *b, int **c) 18 | { 19 | int r1; 20 | 21 | r1 = smp_load_acquire(b); 22 | WRITE_ONCE(*c, r2); 23 | } 24 | 25 | P2(int **a, int **c) 26 | { 27 | int *r1; 28 | 29 | r1 = READ_ONCE(*c); 30 | WRITE_ONCE(*a, r1); 31 | } 32 | 33 | exists 34 | (0:r1=b /\ 1:r1=1 /\ 2:r1=b) 35 | -------------------------------------------------------------------------------- /manual/demo/C-LB+ldref-o+o-ctrl-o+o-dep-o.litmus: -------------------------------------------------------------------------------- 1 | C C-LB+ldref-o+o-ctrl-o+o-dep-o.litmus 2 | 3 | { 4 | a=x0; 5 | c=y0; 6 | 1:r2=b; 7 | } 8 | 9 | P0(int **a) 10 | { 11 | int *r1; 12 | 13 | r1 = READ_ONCE(*a); 14 | WRITE_ONCE(*r1, 1); 15 | } 16 | 17 | P1(int *b, int **c) 18 | { 19 | int r1; 20 | 21 | r1 = READ_ONCE(*b); 22 | if (r1) 23 | WRITE_ONCE(*c, r2); 24 | } 25 | 26 | P2(int **a, int **c) 27 | { 28 | int *r1; 29 | 30 | r1 = READ_ONCE(*c); 31 | WRITE_ONCE(*a, r1); 32 | } 33 | 34 | exists 35 | (0:r1=b /\ 1:r1=1 /\ 2:r1=b) 36 | -------------------------------------------------------------------------------- /manual/demo/C-LB+ldref-o+o-o+o-dep-o.litmus: -------------------------------------------------------------------------------- 1 | C C-LB+ldref-o+o-o+o-dep-o.litmus 2 | 3 | { 4 | a=x0; 5 | c=y0; 6 | 1:r2=b; 7 | } 8 | 9 | P0(int **a) 10 | { 11 | int *r1; 12 | 13 | r1 = READ_ONCE(*a); 14 | WRITE_ONCE(*r1, 1); 15 | } 16 | 17 | P1(int *b, int **c) 18 | { 19 | int r1; 20 | 21 | r1 = READ_ONCE(*b); 22 | WRITE_ONCE(*c, r2); 23 | } 24 | 25 | P2(int **a, int **c) 26 | { 27 | int *r1; 28 | 29 | r1 = READ_ONCE(*c); 30 | WRITE_ONCE(*a, r1); 31 | } 32 | 33 | exists 34 | (0:r1=b /\ 1:r1=1 /\ 2:r1=b) 35 | -------------------------------------------------------------------------------- /manual/demo/C-LB+o-o+o-o+o-o.litmus: -------------------------------------------------------------------------------- 1 | C C-LB+o-o+o-o+o-o.litmus 2 | 3 | { 4 | } 5 | 6 | P0(int *a, int *b) 7 | { 8 | int r1; 9 | 10 | r1 = READ_ONCE(*a); 11 | WRITE_ONCE(*b, 1); 12 | } 13 | 14 | P1(int *b, int *c) 15 | { 16 | int r1; 17 | 18 | r1 = READ_ONCE(*b); 19 | WRITE_ONCE(*c, 1); 20 | } 21 | 22 | P2(int *a, int *c) 23 | { 24 | int r1; 25 | 26 | r1 = READ_ONCE(*c); 27 | WRITE_ONCE(*a, 1); 28 | } 29 | 30 | exists 31 | (0:r1=1 /\ 1:r1=1 /\ 2:r1=1) 32 | -------------------------------------------------------------------------------- /manual/demo/C-LB+o-o+o-o.litmus: -------------------------------------------------------------------------------- 1 | C C-LB+o-o+o-o.litmus 2 | 3 | { 4 | } 5 | 6 | P0(int *a, int *b) 7 | { 8 | int r1; 9 | 10 | r1 = READ_ONCE(*a); 11 | WRITE_ONCE(*b, 1); 12 | } 13 | 14 | P1(int *a, int *b) 15 | { 16 | int r1; 17 | 18 | r2 = READ_ONCE(*b); 19 | WRITE_ONCE(*a, 1); 20 | } 21 | 22 | exists 23 | (0:r1=1 /\ 1:r2=1) 24 | -------------------------------------------------------------------------------- /manual/demo/C-LB+o-rel+rl-o-o-rul+o-sync-o.litmus: -------------------------------------------------------------------------------- 1 | C C-LB+o-rel+rl-o-o-rul+o-sync-o.litmus 2 | 3 | { 4 | } 5 | 6 | P0(int *a, int *r) 7 | { 8 | int r1; 9 | 10 | r1 = READ_ONCE(*a); 11 | smp_store_release(r, 1); 12 | } 13 | 14 | P1(int *b, int *a) 15 | { 16 | int r2; 17 | 18 | rcu_read_lock(); 19 | r2 = READ_ONCE(*b); 20 | WRITE_ONCE(*a, 1); 21 | rcu_read_unlock(); 22 | } 23 | 24 | P2(int *r, int *b) 25 | { 26 | int r1; 27 | 28 | r1 = READ_ONCE(*r); 29 | synchronize_rcu(); 30 | WRITE_ONCE(*b, 1); 31 | } 32 | 33 | filter (2:r1=1) 34 | exists (0:r1=1 /\ 1:r2=1) 35 | -------------------------------------------------------------------------------- /manual/demo/C-LB+o-sync-o+rl-o-o-rul.litmus: -------------------------------------------------------------------------------- 1 | C C-LB+o-sync-o+rl-o-o-rul.litmus 2 | 3 | { 4 | } 5 | 6 | P0(int *a, int *b) 7 | { 8 | int r1; 9 | 10 | r1 = READ_ONCE(*a); 11 | synchronize_rcu(); 12 | WRITE_ONCE(*b, 1); 13 | } 14 | 15 | P1(int *b, int *a) 16 | { 17 | int r2; 18 | 19 | rcu_read_lock(); 20 | r2 = READ_ONCE(*b); 21 | WRITE_ONCE(*a, 1); 22 | rcu_read_unlock(); 23 | } 24 | 25 | exists 26 | (0:r1=1 /\ 1:r2=1) 27 | -------------------------------------------------------------------------------- /manual/demo/C-LB+rl-deref-o-rul+o-sync-o.litmus: -------------------------------------------------------------------------------- 1 | C C-LB+rl-deref-o-rul+o-sync-o.litmus 2 | 3 | { 4 | a=x; 5 | } 6 | 7 | P0(int **a) 8 | { 9 | int *r1; 10 | int r2; 11 | 12 | rcu_read_lock(); 13 | r1 = rcu_dereference(*a); 14 | r2 = READ_ONCE(*r1); 15 | rcu_read_unlock(); 16 | } 17 | 18 | P1(int **a, int *x, int *y) 19 | { 20 | WRITE_ONCE(*a, y); 21 | synchronize_rcu(); 22 | WRITE_ONCE(*x, 1); /* Emulate kfree(). */ 23 | } 24 | 25 | exists 26 | (0:r1=x /\ 0:r2=1) 27 | -------------------------------------------------------------------------------- /manual/demo/C-MP+o-assign+o-dep-o.litmus: -------------------------------------------------------------------------------- 1 | C C-MP+o-assign+o-dep-o.litmus 2 | 3 | { 4 | x=y0; 5 | 0:r4=y; 6 | } 7 | 8 | P0(int *x, int *y) 9 | { 10 | WRITE_ONCE(*y, 1); 11 | rcu_assign_pointer(*x, r4); 12 | } 13 | 14 | P1(int *x, int *y) 15 | { 16 | int r1; 17 | int r2; 18 | 19 | r1 = READ_ONCE(*x); 20 | r2 = READ_ONCE(*r1); 21 | } 22 | 23 | exists 24 | (1:r1=y /\ 1:r2=0) 25 | -------------------------------------------------------------------------------- /manual/demo/C-MP+o-mb-o+o-mb-o.litmus: -------------------------------------------------------------------------------- 1 | C C-MP+o-mb-o+o-mb-o 2 | 3 | { 4 | } 5 | 6 | P0(int *x, int *y) 7 | { 8 | WRITE_ONCE(*y, 1); 9 | smp_mb(); 10 | WRITE_ONCE(*x, 1); 11 | } 12 | 13 | P1(int *x, int *y) 14 | { 15 | int r1; 16 | int r2; 17 | 18 | r1 = READ_ONCE(*x); 19 | smp_mb(); 20 | r2 = READ_ONCE(*y); 21 | } 22 | 23 | exists 24 | (1:r1=1 /\ 1:r2=0) 25 | -------------------------------------------------------------------------------- /manual/demo/C-MP+o-o+o-o.litmus: -------------------------------------------------------------------------------- 1 | C C-MP+o-o+o-o 2 | 3 | { 4 | } 5 | 6 | P0(int *x, int *y) 7 | { 8 | WRITE_ONCE(*y, 1); 9 | WRITE_ONCE(*x, 1); 10 | } 11 | 12 | P1(int *x, int *y) 13 | { 14 | int r1; 15 | int r2; 16 | 17 | r1 = READ_ONCE(*x); 18 | r2 = READ_ONCE(*y); 19 | } 20 | 21 | exists 22 | (1:r1=1 /\ 1:r2=0) 23 | -------------------------------------------------------------------------------- /manual/demo/C-MP+o-rel+acq-o.litmus: -------------------------------------------------------------------------------- 1 | C C-MP+o-rel+acq-o.litmus 2 | 3 | { 4 | } 5 | 6 | P0(int *a, int *b) 7 | { 8 | WRITE_ONCE(*a, 1); 9 | smp_store_release(b, 1); 10 | } 11 | 12 | P1(int *a, int *b) 13 | { 14 | int r1; 15 | int r2; 16 | 17 | r1 = smp_load_acquire(b); 18 | r2 = READ_ONCE(*a); 19 | } 20 | 21 | exists 22 | (1:r1=1 /\ 1:r2=0) 23 | -------------------------------------------------------------------------------- /manual/demo/C-MP+o-wmb-o+o-rmb-o.litmus: -------------------------------------------------------------------------------- 1 | C C-MP+o-wmb-o+o-rmb-o.litmus 2 | 3 | { 4 | } 5 | 6 | P0(int *a, int *b) 7 | { 8 | WRITE_ONCE(*a, 1); 9 | smp_wmb(); 10 | WRITE_ONCE(*b, 1); 11 | } 12 | 13 | P1(int *a, int *b) 14 | { 15 | int r1; 16 | int r2; 17 | 18 | r1 = READ_ONCE(*b); 19 | smp_rmb(); 20 | r2 = READ_ONCE(*a); 21 | } 22 | 23 | exists 24 | (1:r1=1 /\ 1:r2=0) 25 | -------------------------------------------------------------------------------- /manual/demo/C-R+o-wmb-o+o+mb+o.litmus: -------------------------------------------------------------------------------- 1 | C C-R+o-wmb-o+o+mb+o.litmus 2 | 3 | { 4 | } 5 | 6 | P0(int *a, int *b) 7 | { 8 | WRITE_ONCE(*a, 1); 9 | smp_wmb(); 10 | WRITE_ONCE(*b, 1); 11 | } 12 | 13 | P1(int *a, int *b) 14 | { 15 | int r1; 16 | 17 | WRITE_ONCE(*b, 2); 18 | smp_mb(); 19 | r1 = READ_ONCE(*a); 20 | } 21 | 22 | exists 23 | (b=2 /\ 1:r1=0) 24 | -------------------------------------------------------------------------------- /manual/demo/C-RR-R+WW-G.litmus: -------------------------------------------------------------------------------- 1 | C auto/C-RR-R+WW-G 2 | 3 | (* 4 | * Result: Never 5 | *) 6 | { 7 | } 8 | 9 | 10 | P0(int *x0, int *x1) 11 | { 12 | int r1; int r2; 13 | rcu_read_lock(); 14 | r1 = READ_ONCE(*x0); 15 | r2 = READ_ONCE(*x1); 16 | rcu_read_unlock(); 17 | } 18 | 19 | P1(int *x0, int *x1) 20 | { 21 | WRITE_ONCE(*x1, 1); 22 | synchronize_rcu(); 23 | WRITE_ONCE(*x0, 1); 24 | } 25 | 26 | exists 27 | (0:r1=1 /\ 0:r2=0) 28 | -------------------------------------------------------------------------------- /manual/demo/C-RW-R+RW-G+RW-R.litmus: -------------------------------------------------------------------------------- 1 | C auto/C-RW-R+RW-G+RW-R 2 | { 3 | } 4 | 5 | P0(int *x, int *y) 6 | { 7 | int r1; 8 | rcu_read_lock(); 9 | r1 = READ_ONCE(*y); 10 | WRITE_ONCE(*x, 1); 11 | rcu_read_unlock(); 12 | } 13 | 14 | P1(int *x, int *z) 15 | { 16 | int r2; 17 | r2 = READ_ONCE(*x); 18 | synchronize_rcu(); 19 | WRITE_ONCE(*z, 1); 20 | } 21 | 22 | P2(int *z, int *y) 23 | { 24 | int r3; 25 | rcu_read_lock(); 26 | r3 = READ_ONCE(*z); 27 | WRITE_ONCE(*y, 1); 28 | rcu_read_unlock(); 29 | } 30 | 31 | exists 32 | (0:r1=1 /\ 1:r2=1 /\ 2:r3=1) 33 | -------------------------------------------------------------------------------- /manual/demo/C-RW-R+RW-Gr+RW-Ra.litmus: -------------------------------------------------------------------------------- 1 | C auto/C-RW-R+RW-Gr+RW-Ra 2 | { 3 | } 4 | 5 | P0(int *x, int *y) 6 | { 7 | int r1; 8 | rcu_read_lock(); 9 | r1 = READ_ONCE(*y); 10 | WRITE_ONCE(*x, 1); 11 | rcu_read_unlock(); 12 | } 13 | 14 | P1(int *x, int *z) 15 | { 16 | int r2; 17 | r2 = READ_ONCE(*x); 18 | synchronize_rcu(); 19 | smp_store_release(z, 1); 20 | } 21 | 22 | P2(int *z, int *y) 23 | { 24 | int r3; 25 | rcu_read_lock(); 26 | r3 = smp_load_acquire(z); 27 | WRITE_ONCE(*y, 1); 28 | rcu_read_unlock(); 29 | } 30 | 31 | exists 32 | (0:r1=1 /\ 1:r2=1 /\ 2:r3=1) 33 | -------------------------------------------------------------------------------- /manual/demo/C-RW-Ra+RW-G+RW-Rr.litmus: -------------------------------------------------------------------------------- 1 | C auto/C-RW-R+RW-Gr+RW-Ra 2 | { 3 | } 4 | 5 | P0(int *x, int *y) 6 | { 7 | rcu_read_lock(); 8 | WRITE_ONCE(*x, 1); 9 | r1 = smp_load_acquire(y); 10 | rcu_read_unlock(); 11 | } 12 | 13 | P1(int *x, int *z) 14 | { 15 | r2 = READ_ONCE(*x); 16 | synchronize_rcu(); 17 | WRITE_ONCE(*z, 1); 18 | } 19 | 20 | P2(int *z, int *y) 21 | { 22 | rcu_read_lock(); 23 | r3 = READ_ONCE(*z); 24 | smp_store_release(y, 1); 25 | rcu_read_unlock(); 26 | } 27 | 28 | exists 29 | (0:r1=1 /\ 1:r2=1 /\ 2:r3=1) 30 | -------------------------------------------------------------------------------- /manual/demo/C-SB+o-mb-o+o-mb-o.litmus: -------------------------------------------------------------------------------- 1 | C C-SB+o-mb-o+o-mb-o.litmus 2 | 3 | { 4 | } 5 | 6 | P0(int *x, int *y) 7 | { 8 | int r1; 9 | 10 | WRITE_ONCE(*x, 1); 11 | smp_mb(); 12 | r1 = READ_ONCE(*y); 13 | } 14 | 15 | P1(int *x, int *y) 16 | { 17 | int r2; 18 | 19 | WRITE_ONCE(*y, 1); 20 | smp_mb(); 21 | r2 = READ_ONCE(*x); 22 | } 23 | 24 | exists 25 | (0:r1=0 /\ 1:r2=0) 26 | -------------------------------------------------------------------------------- /manual/demo/C-W+WRC+o-rel+acq-o+o-mb-o.litmus: -------------------------------------------------------------------------------- 1 | C C-W+WRC+o-rel+acq-o+o-mb-o.litmus 2 | 3 | { 4 | } 5 | 6 | P0(int *a, int *b) 7 | { 8 | WRITE_ONCE(*a, 1); 9 | smp_store_release(b, 1); 10 | } 11 | 12 | P1(int *b, int *c) 13 | { 14 | int r1; 15 | int r2; 16 | 17 | r1 = smp_load_acquire(b); 18 | r2 = READ_ONCE(*c); 19 | } 20 | 21 | P2(int *c, int *a) 22 | { 23 | int r3; 24 | 25 | WRITE_ONCE(*c, 1); 26 | smp_mb(); 27 | r3 = READ_ONCE(*a); 28 | } 29 | 30 | exists 31 | (1:r1=1 /\ 1:r2=0 /\ 2:r3=0) 32 | -------------------------------------------------------------------------------- /manual/demo/C-WRC-o+o-data-o+o-rmb-o.litmus: -------------------------------------------------------------------------------- 1 | C C-WRC-o+o-data-o+o-rmb-o 2 | 3 | { 4 | } 5 | 6 | P0(int *x) 7 | { 8 | WRITE_ONCE(*x, 1); 9 | } 10 | 11 | P1(int *x, int* y) 12 | { 13 | int r1; 14 | 15 | r1 = READ_ONCE(*x); 16 | WRITE_ONCE(*y, r1); 17 | } 18 | 19 | P2(int *x, int* y) 20 | { 21 | int r2; 22 | int r3; 23 | 24 | r2 = READ_ONCE(*y); 25 | smp_rmb(); 26 | r3 = READ_ONCE(*x); 27 | } 28 | 29 | exists (1:r1=1 /\ 2:r2=1 /\ 2:r3=0) 30 | -------------------------------------------------------------------------------- /manual/demo/C-WWC+o+acq-o+acq-o.litmus: -------------------------------------------------------------------------------- 1 | C C-WWC+o+acq-o+acq-o.litmus 2 | 3 | { 4 | } 5 | 6 | P0(int *a) 7 | { 8 | WRITE_ONCE(*a, 1); 9 | } 10 | 11 | P1(int *a, int *b) 12 | { 13 | int r1; 14 | 15 | r1 = smp_load_acquire(a); 16 | WRITE_ONCE(*b, 1); 17 | } 18 | 19 | P2(int *a, int *b) 20 | { 21 | int r1; 22 | 23 | r1 = smp_load_acquire(b); 24 | WRITE_ONCE(*a, 2); 25 | } 26 | 27 | exists 28 | (1:r1=1 /\ 2:r1=1 /\ a=1) 29 | -------------------------------------------------------------------------------- /manual/demo/C-WWC+o+o-rel+acq-o.litmus: -------------------------------------------------------------------------------- 1 | C C-WWC+o+o-rel+acq-o.litmus 2 | 3 | { 4 | } 5 | 6 | P0(int *a) 7 | { 8 | WRITE_ONCE(*a, 1); 9 | } 10 | 11 | P1(int *a, int *b) 12 | { 13 | int r1; 14 | 15 | r1 = READ_ONCE(*a); 16 | smp_store_release(b, 1); 17 | } 18 | 19 | P2(int *a, int *b) 20 | { 21 | int r1; 22 | 23 | r1 = smp_load_acquire(b); 24 | WRITE_ONCE(*a, 2); 25 | } 26 | 27 | exists 28 | (1:r1=1 /\ 2:r1=1 /\ a=1) 29 | -------------------------------------------------------------------------------- /manual/demo/C-Z6.0+o-mb-o+acq-o+o-mb-o.litmus: -------------------------------------------------------------------------------- 1 | C C-Z6.0+o-mb-o+acq-o+o-mb-o.litmus 2 | 3 | { 4 | } 5 | 6 | P0(int *a, int *b) 7 | { 8 | WRITE_ONCE(*a, 1); 9 | smp_mb(); 10 | WRITE_ONCE(*b, 1); 11 | } 12 | 13 | P1(int *b, int *c) 14 | { 15 | int r1; 16 | 17 | r1 = smp_load_acquire(b); 18 | WRITE_ONCE(*c, 1); 19 | } 20 | 21 | P2(int *a, int *c) 22 | { 23 | int r1; 24 | 25 | WRITE_ONCE(*c, 2); 26 | smp_mb(); 27 | r1 = READ_ONCE(*a); 28 | } 29 | 30 | exists 31 | (1:r1=1 /\ 2:r1=0 /\ c=2) 32 | -------------------------------------------------------------------------------- /manual/demo/C-Z6.0+o-rel+acq-o+o-mb-o.litmus: -------------------------------------------------------------------------------- 1 | C C-Z6.0+o-rel+acq-o+o-mb-o.litmus 2 | 3 | { 4 | } 5 | 6 | P0(int *a, int *b) 7 | { 8 | WRITE_ONCE(*a, 1); 9 | smp_store_release(b, 1); 10 | } 11 | 12 | P1(int *b, int *c) 13 | { 14 | int r1; 15 | 16 | r1 = smp_load_acquire(b); 17 | WRITE_ONCE(*c, 1); 18 | } 19 | 20 | P2(int *a, int *c) 21 | { 22 | int r1; 23 | 24 | WRITE_ONCE(*c, 2); 25 | smp_mb(); 26 | r1 = READ_ONCE(*a); 27 | } 28 | 29 | exists 30 | (1:r1=1 /\ 2:r1=0 /\ c=2) 31 | -------------------------------------------------------------------------------- /manual/demo/C-atomicpo.litmus: -------------------------------------------------------------------------------- 1 | C C-atomicpo.litmus 2 | 3 | { 4 | } 5 | 6 | P0(int *x, int *y) 7 | { 8 | WRITE_ONCE(*y, 1); 9 | smp_wmb(); 10 | WRITE_ONCE(*x, 1); 11 | } 12 | 13 | P1(int *x, int *y) 14 | { 15 | r1 = xchg_relaxed(x, 1); 16 | r2 = xchg_relaxed(y, 1); 17 | } 18 | 19 | exists (1:r1=1 /\ 1:r2=0) 20 | -------------------------------------------------------------------------------- /manual/demo/C-locktest-filter.litmus: -------------------------------------------------------------------------------- 1 | C C-locktest.litmus 2 | 3 | { 4 | } 5 | 6 | P0(int *x, int *l) 7 | { 8 | int r1; 9 | int r2; 10 | 11 | r1 = xchg_acquire(l, 1); 12 | r2 = READ_ONCE(*x); 13 | WRITE_ONCE(*x, 1); 14 | WRITE_ONCE(*x, 0); 15 | smp_store_release(l, 0); 16 | } 17 | 18 | P1(int *x, int *l) 19 | { 20 | int r1; 21 | int r2; 22 | 23 | r1 = xchg_acquire(l, 1); 24 | r2 = READ_ONCE(*x); 25 | WRITE_ONCE(*x, 1); 26 | WRITE_ONCE(*x, 0); 27 | smp_store_release(l, 0); 28 | } 29 | 30 | locations [0:r1;1:r1] 31 | filter (0:r1=0 /\ 1:r1=0) 32 | exists (0:r2=1 \/ 1:r2=1) 33 | -------------------------------------------------------------------------------- /manual/demo/C-po-loc.litmus: -------------------------------------------------------------------------------- 1 | C C-po-loc 2 | 3 | { 4 | } 5 | 6 | P0(int *x, int *y) 7 | { 8 | int r0; 9 | int r1; 10 | 11 | r0 = READ_ONCE(*y); 12 | smp_rmb(); 13 | r1 = READ_ONCE(*x); 14 | WRITE_ONCE(*x, 1); 15 | } 16 | 17 | P1(int *x, int *y) 18 | { 19 | int r2; 20 | 21 | r2 = READ_ONCE(*x); 22 | WRITE_ONCE(*y, r2); 23 | } 24 | 25 | exists (0:r0=1) 26 | -------------------------------------------------------------------------------- /manual/demo/C-rcu-relacq1-relacq.litmus: -------------------------------------------------------------------------------- 1 | C C-rcu-relacq1-relacq.litmus 2 | 3 | { 4 | } 5 | 6 | P0(int *x) 7 | { 8 | WRITE_ONCE(*x, 1); 9 | } 10 | 11 | P1(int *x, int *y, int *csend01) 12 | { 13 | int r0; 14 | r0 = READ_ONCE(*x); 15 | smp_store_release(csend01, 1); 16 | smp_wmb(); 17 | WRITE_ONCE(*y, 1); 18 | } 19 | 20 | P2(int *x, int *y) 21 | { 22 | int r0; int r1; 23 | r0 = READ_ONCE(*y); 24 | smp_rmb(); 25 | r1 = READ_ONCE(*x); 26 | } 27 | 28 | exists 29 | (1:r0=1 /\ 2:r0=1 /\ 2:r1=0) 30 | -------------------------------------------------------------------------------- /manual/demo/C-rcu-relacq1.litmus: -------------------------------------------------------------------------------- 1 | C C-rcu-relacq1.litmus 2 | 3 | { 4 | } 5 | 6 | P0(int *x) 7 | { 8 | WRITE_ONCE(*x, 1); 9 | } 10 | 11 | P1(int *x, int *y) 12 | { 13 | int r0; 14 | rcu_read_lock(); 15 | r0 = READ_ONCE(*x); 16 | rcu_read_unlock(); 17 | smp_wmb(); 18 | WRITE_ONCE(*y, 1); 19 | } 20 | 21 | P2(int *x, int *y) 22 | { 23 | int r0; int r1; 24 | r0 = READ_ONCE(*y); 25 | smp_rmb(); 26 | r1 = READ_ONCE(*x); 27 | } 28 | 29 | exists 30 | (1:r0=1 /\ 2:r0=1 /\ 2:r1=0) 31 | -------------------------------------------------------------------------------- /manual/demo/C-release-acquire-is-B-cumulative.litmus: -------------------------------------------------------------------------------- 1 | C C-release-acquire-is-B-cumulative.litmus 2 | 3 | { 4 | } 5 | 6 | P0(int *x, int *y) 7 | { 8 | WRITE_ONCE(*x, 1); 9 | smp_store_release(y, 1); 10 | } 11 | 12 | P1(int *y, int *z) 13 | { 14 | r1 = smp_load_acquire(y); 15 | WRITE_ONCE(*z, 1); 16 | } 17 | 18 | P2(int *x, int *z) 19 | { 20 | r2 = READ_ONCE(*z); 21 | smp_rmb(); 22 | r3 = READ_ONCE(*x); 23 | } 24 | 25 | exists (1:r1=1 /\ 2:r2=1 /\ 2:r3=0) 26 | -------------------------------------------------------------------------------- /manual/demo/C-release-is-A-cumulative.litmus: -------------------------------------------------------------------------------- 1 | C C-release-is-A-cumulative.litmus 2 | 3 | { 4 | } 5 | 6 | P0(int *x) 7 | { 8 | WRITE_ONCE(*x, 1); 9 | } 10 | 11 | P1(int *x, int *y) 12 | { 13 | r1 = READ_ONCE(*x); 14 | smp_store_release(y, 1); 15 | } 16 | 17 | P2(int *x, int *y) 18 | { 19 | r2 = READ_ONCE(*y); 20 | smp_rmb(); 21 | r3 = READ_ONCE(*x); 22 | } 23 | 24 | exists (1:r1=1 /\ 2:r2=1 /\ 2:r3=0) 25 | -------------------------------------------------------------------------------- /manual/demo/C-release-is-not-B-cumulative.litmus: -------------------------------------------------------------------------------- 1 | C C-release-is-not-B-cumulative.litmus 2 | 3 | { 4 | } 5 | 6 | P0(int *x, int *y) 7 | { 8 | WRITE_ONCE(*x, 1); 9 | smp_store_release(y, 1); 10 | } 11 | 12 | P1(int *y, int *z) 13 | { 14 | r1 = READ_ONCE(*y); 15 | WRITE_ONCE(*z, r1); 16 | } 17 | 18 | P2(int *x, int *z) 19 | { 20 | r2 = READ_ONCE(*z); 21 | smp_rmb(); 22 | r3 = READ_ONCE(*x); 23 | } 24 | 25 | exists (1:r1=1 /\ 2:r2=1 /\ 2:r3=0) 26 | -------------------------------------------------------------------------------- /manual/demo/C-relseq-not-B-cumulative.litmus: -------------------------------------------------------------------------------- 1 | C C-relseq.litmus 2 | 3 | { 4 | } 5 | 6 | P0(int *x, int *y) 7 | { 8 | WRITE_ONCE(*x, 1); 9 | smp_store_release(y, 1); 10 | WRITE_ONCE(*y, 2); 11 | } 12 | 13 | P1(int *y) 14 | { 15 | r1 = xchg_relaxed(y, 3); 16 | } 17 | 18 | P2(int *y, int *z) 19 | { 20 | r2 = smp_load_acquire(y); 21 | WRITE_ONCE(*z, 1); 22 | } 23 | 24 | P3(int *x, int *z) 25 | { 26 | r3 = READ_ONCE(*z); 27 | smp_rmb(); 28 | r4 = READ_ONCE(*x); 29 | } 30 | 31 | exists (1:r1=2 /\ 2:r2=3 /\ 3:r3=1 /\ 3:r4=0) 32 | -------------------------------------------------------------------------------- /manual/demo/C-relseq.litmus: -------------------------------------------------------------------------------- 1 | C C-relseq.litmus 2 | 3 | { 4 | } 5 | 6 | P0(int *x, int *y) 7 | { 8 | WRITE_ONCE(*x, 1); 9 | smp_store_release(y, 1); 10 | WRITE_ONCE(*y, 2); 11 | } 12 | 13 | P1(int *y) 14 | { 15 | r1 = xchg_relaxed(y, 3); 16 | } 17 | 18 | P2(int *x, int *y) 19 | { 20 | r2 = READ_ONCE(*y); 21 | smp_rmb(); 22 | r3 = READ_ONCE(*x); 23 | } 24 | 25 | exists (1:r1=2 /\ 2:r2=3 /\ 2:r3=0) 26 | -------------------------------------------------------------------------------- /manual/demo/C-wmb-is-B-cumulative.litmus: -------------------------------------------------------------------------------- 1 | C C-wmb-is-B-cumulative.litmus 2 | 3 | { 4 | } 5 | 6 | P0(int *x, int *y) 7 | { 8 | WRITE_ONCE(*x, 1); 9 | smp_wmb(); 10 | WRITE_ONCE(*y, 1); 11 | } 12 | 13 | P1(int *y, int *z) 14 | { 15 | r1 = READ_ONCE(*y); 16 | WRITE_ONCE(*z, r1); 17 | } 18 | 19 | P2(int *x, int *z) 20 | { 21 | r2 = READ_ONCE(*z); 22 | smp_rmb(); 23 | r3 = READ_ONCE(*x); 24 | } 25 | 26 | exists (1:r1=1 /\ 2:r2=1 /\ 2:r3=0) 27 | -------------------------------------------------------------------------------- /manual/demo/C-wmb-is-not-A-cumulative.litmus: -------------------------------------------------------------------------------- 1 | C C-wmb-is-not-A-cumulative.litmus 2 | 3 | { 4 | } 5 | 6 | P0(int *x) 7 | { 8 | WRITE_ONCE(*x, 1); 9 | } 10 | 11 | P1(int *x, int *y, int *z) 12 | { 13 | r1 = READ_ONCE(*x); 14 | WRITE_ONCE(*z, r1); 15 | smp_wmb(); 16 | WRITE_ONCE(*y, 1); 17 | } 18 | 19 | P2(int *x, int *y) 20 | { 21 | r2 = READ_ONCE(*y); 22 | smp_rmb(); 23 | r3 = READ_ONCE(*x); 24 | } 25 | 26 | exists (1:r1=1 /\ 2:r2=1 /\ 2:r3=0) 27 | -------------------------------------------------------------------------------- /manual/demo/PPC-LB+addrs-po.litmus: -------------------------------------------------------------------------------- 1 | PPC LB+addrs 2 | "DpAddrdW Rfe DpAddrdW Rfe" 3 | Cycle=Rfe DpAddrdW Rfe DpAddrdW 4 | { 5 | 0:r2=x; 0:r5=y; 6 | 1:r2=y; 1:r5=x; 1:r6=z; 1:r7=1; 7 | } 8 | P0 | P1 ; 9 | lwz r1,0(r2) | lwz r1,0(r2) ; 10 | xor r3,r1,r1 | xor r3,r1,r1 ; 11 | li r4,1 | li r4,1 ; 12 | stwx r4,r3,r5 | stwx r4,r3,r6 ; 13 | | stw r7,0(r5) ; 14 | exists 15 | (0:r1=1 /\ 1:r1=1) 16 | -------------------------------------------------------------------------------- /manual/demo/PPC-MP+lwsync+addr-po.litmus: -------------------------------------------------------------------------------- 1 | PPC MP+lwsync+addr 2 | "LwSyncdWW Rfe DpAddrdR Fre" 3 | Cycle=Rfe DpAddrdR Fre LwSyncdWW 4 | { 5 | 0:r2=x; 0:r4=y; 6 | 1:r2=y; 1:r5=x; 1:r6=2; 7 | } 8 | P0 | P1 ; 9 | li r1,1 | lwz r1,0(r2) ; 10 | stw r1,0(r2) | xor r3,r1,r1 ; 11 | lwsync | lwzx r4,r3,r5 ; 12 | li r3,1 | stw r6,0(r4) ; 13 | stw r3,0(r4) | ; 14 | exists 15 | (1:r1=1 /\ 1:r4=0) 16 | -------------------------------------------------------------------------------- /manual/demo/PPC-MP+lwsync+addr.litmus: -------------------------------------------------------------------------------- 1 | PPC PPC-MP+lwsync+addr.litmus 2 | { 3 | y=a; 4 | 0:r2=x; 0:r4=y; 5 | 1:r2=y; 1:r5=x; 1:r6=2; 6 | } 7 | P0 | P1 ; 8 | li r1,1 | lwz r1,0(r2) ; 9 | stw r1,0(r2) | lwz r4,0(r1) ; 10 | lwsync | ; 11 | stw r2,0(r4) | ; 12 | exists 13 | (1:r1=x /\ 1:r4=0) 14 | -------------------------------------------------------------------------------- /manual/demo/PPC-MP+lwsync+ctrl.litmus: -------------------------------------------------------------------------------- 1 | PPC MP+lwsync+addr 2 | "LwSyncdWW Rfe DpAddrdR Fre" 3 | Cycle=Rfe DpAddrdR Fre LwSyncdWW 4 | { 5 | 0:r2=x; 0:r4=y; 6 | 1:r2=y; 1:r5=x; 1:r6=2; 7 | } 8 | P0 | P1 ; 9 | li r1,1 | lwz r1,0(r2) ; 10 | stw r1,0(r2) | cmpwi r1,1 ; 11 | lwsync | bne SHORT ; 12 | li r3,1 | lwz r4,0(r5) ; 13 | stw r3,0(r4) | SHORT: ; 14 | exists 15 | (1:r1=1 /\ 1:r4=0) 16 | -------------------------------------------------------------------------------- /manual/demo/alpha-split-cache-example1.litmus: -------------------------------------------------------------------------------- 1 | C alpha-split-cache-example1 2 | { 3 | int u = 0; 4 | int v = 0; 5 | int *p = &u; 6 | } 7 | 8 | P0(int **p, int *v) 9 | { 10 | WRITE_ONCE(*v, 1); 11 | smp_mb(); 12 | WRITE_ONCE(*p, v); 13 | } 14 | 15 | P1(int **p) 16 | { 17 | int *r1; 18 | int r2; 19 | 20 | r1 = READ_ONCE(*p); 21 | r2 = READ_ONCE(*r1); 22 | } 23 | 24 | exists (1:r1=v /\ 1:r2=0); 25 | -------------------------------------------------------------------------------- /manual/extra/.gitignore: -------------------------------------------------------------------------------- 1 | !*.litmus 2 | -------------------------------------------------------------------------------- /manual/extra/3.lb+o-mb-o+o-mb-o+o-addr-rb_dep-o.litmus: -------------------------------------------------------------------------------- 1 | LISA 3.LB+o-mb-o+o-mb-o+o-addr-rb_dep-o (*Paul says forbid*) 2 | { 3 | x = 0; 4 | y = 0; 5 | z = 0; 6 | } 7 | P0 | P1 | P2 ; 8 | r[once] r1 x | r[once] r3 y | r[once] r4 z ; 9 | f[mb] | f[mb] | mov r9 (xor r4 r4) ; 10 | w[once] y 1 | w[once] z 1 | mov r5 (add x r9) ; 11 | | | f[rb_dep] ; 12 | | | w[once] r5 1 ; 13 | exists(0:r1=1 /\ 1:r3=1 /\ 2:r4=1) 14 | -------------------------------------------------------------------------------- /manual/extra/3.lb+o-mb-o+o-mb-o+o-rb_dep-addr-o.litmus: -------------------------------------------------------------------------------- 1 | LISA 3.LB+o-mb-o+o-mb-o+o-rb_dep-addr-o (*Paul says forbid*) 2 | { 3 | x = 0; 4 | y = 0; 5 | z = 0; 6 | } 7 | P0 | P1 | P2 ; 8 | r[once] r1 x | r[once] r3 y | r[once] r4 z ; 9 | | | f[rb_dep] ; 10 | f[mb] | f[mb] | mov r9 (xor r4 r4) ; 11 | w[once] y 1 | w[once] z 1 | mov r5 (add x r9) ; 12 | | | w[once] r5 1 ; 13 | exists(0:r1=1 /\ 1:r3=1 /\ 2:r4=1) 14 | -------------------------------------------------------------------------------- /manual/extra/C-3.lb+o-mb-o+o-mb-o+o-addr-o.litmus: -------------------------------------------------------------------------------- 1 | C C-3.LB+o-mb-o+o-mb-o+o-addr-o 2 | { 3 | x = 0; 4 | y = 0; 5 | z = 0; 6 | } 7 | 8 | P0(int *x, int *y) 9 | { 10 | int r1; 11 | r1 = READ_ONCE(*x); 12 | smp_mb(); 13 | WRITE_ONCE(*y, 1); 14 | } 15 | 16 | P1(int *y, int *z) 17 | { 18 | int r3; 19 | r3 = READ_ONCE(*y); 20 | smp_mb(); 21 | WRITE_ONCE(*z, 1); 22 | } 23 | 24 | P2(int *x, int *z) 25 | { 26 | int r4; int r9; int *r5; 27 | r4 = READ_ONCE(*z); 28 | r9 = (r4 & 8); 29 | r5 = (x + r9); 30 | WRITE_ONCE(*r5, 1); 31 | } 32 | 33 | exists(0:r1=1 /\ 1:r3=1 /\ 2:r4=1) 34 | -------------------------------------------------------------------------------- /manual/extra/C-3.lb+o-mb-o+o-mb-o.litmus: -------------------------------------------------------------------------------- 1 | C C-3.LB+o-mb-o+o-mb-o 2 | { 3 | x = 0; 4 | y = 0; 5 | z = 0; 6 | } 7 | 8 | P0(int *x, int *y) 9 | { 10 | int r1; 11 | r1 = READ_ONCE(*x); 12 | smp_mb(); 13 | WRITE_ONCE(*y, 1); 14 | } 15 | 16 | P1(int *y, int *z) 17 | { 18 | int r3; 19 | r3 = READ_ONCE(*y); 20 | smp_mb(); 21 | WRITE_ONCE(*z, 1); 22 | } 23 | 24 | P2(int *x, int *z) 25 | { 26 | int r4; 27 | r4 = READ_ONCE(*z); 28 | smp_mb(); 29 | WRITE_ONCE(*x, 1); 30 | } 31 | 32 | exists(0:r1=1 /\ 1:r3=1 /\ 2:r4=1) 33 | -------------------------------------------------------------------------------- /manual/extra/C-3.lb+o-o+o-o.litmus: -------------------------------------------------------------------------------- 1 | C C-3.LB+o-o+o-o 2 | { 3 | x = 0; 4 | y = 0; 5 | z = 0; 6 | } 7 | 8 | P0(int *x, int *y) 9 | { 10 | int r1; 11 | r1 = READ_ONCE(*x); 12 | WRITE_ONCE(*y, 1); 13 | } 14 | 15 | P1(int *y, int *z) 16 | { 17 | int r3; 18 | r3 = READ_ONCE(*y); 19 | WRITE_ONCE(*z, 1); 20 | } 21 | 22 | P2(int *x, int *z) 23 | { 24 | int r4; 25 | r4 = READ_ONCE(*z); 26 | WRITE_ONCE(*x, 1); 27 | } 28 | 29 | exists(0:r1=1 /\ 1:r3=1 /\ 2:r4=1) 30 | -------------------------------------------------------------------------------- /manual/extra/C-Weak-RCU-Readers.litmus: -------------------------------------------------------------------------------- 1 | C C-Weak-RCU-Readers 2 | { 3 | x = 0; y = 0; 4 | } 5 | 6 | P0(int *x, int *y) 7 | { 8 | int r1; 9 | rcu_read_lock(); 10 | r1 = READ_ONCE(*x); 11 | rcu_read_unlock(); 12 | rcu_read_lock(); 13 | WRITE_ONCE(*y, 1); 14 | rcu_read_unlock(); 15 | } 16 | 17 | P1(int *y, int *x) 18 | { 19 | int r2; 20 | rcu_read_lock(); 21 | r2 = READ_ONCE(*y); 22 | rcu_read_unlock(); 23 | rcu_read_lock(); 24 | WRITE_ONCE(*x, 1); 25 | rcu_read_unlock(); 26 | } 27 | 28 | exists(0:r1 = 1 /\ 1:r2 = 1) 29 | -------------------------------------------------------------------------------- /manual/extra/C-dist-2+2w+o-o+o-o.litmus: -------------------------------------------------------------------------------- 1 | C C-dist-2+2w+o-o+o-o 2 | { 3 | x = 0; 4 | y = 0; 5 | } 6 | 7 | P0(int *x) 8 | { 9 | WRITE_ONCE(*x, 1); 10 | } 11 | 12 | P1(int *y, int *x) 13 | { 14 | int r1; 15 | r1 = READ_ONCE(*x); 16 | WRITE_ONCE(*y, 2); 17 | } 18 | 19 | P2(int *x, int *y) 20 | { 21 | WRITE_ONCE(*y, 1); 22 | WRITE_ONCE(*x, 2); 23 | } 24 | 25 | exists (1:r1=1 /\ x=1 /\ y=1) 26 | -------------------------------------------------------------------------------- /manual/extra/C-dist-2+2w+rel+acq-o+o-rel.litmus: -------------------------------------------------------------------------------- 1 | C C-dist-2+2w+rel+acq-o+o-rel 2 | { 3 | x = 0; 4 | y = 0; 5 | } 6 | 7 | P0(int *x) 8 | { 9 | smp_store_release(x, 1); 10 | } 11 | 12 | P1(int *y, int *x) 13 | { 14 | int r1 = smp_load_acquire(x); 15 | WRITE_ONCE(*y, 2); 16 | } 17 | 18 | P2(int *x, int *y) 19 | { 20 | WRITE_ONCE(*y, 1); 21 | smp_store_release(x, 2); 22 | } 23 | 24 | exists (1:r1=1 /\ x=1 /\ y=1) 25 | -------------------------------------------------------------------------------- /manual/extra/C-dist-2+2w+rel+acq-o+o-wmb-o.litmus: -------------------------------------------------------------------------------- 1 | C C-dist-2+2w+rel+acq-o+o-wmb-o 2 | { 3 | x = 0; 4 | y = 0; 5 | } 6 | 7 | P0(int *x) 8 | { 9 | smp_store_release(x, 1); 10 | } 11 | 12 | P1(int *y, int *x) 13 | { 14 | int r1 = smp_load_acquire(x); 15 | WRITE_ONCE(*y, 2); 16 | } 17 | 18 | P2(int *x, int *y) 19 | { 20 | WRITE_ONCE(*y, 1); 21 | smp_wmb(); 22 | WRITE_ONCE(*x, 2); 23 | } 24 | 25 | exists (1:r1=1 /\ x=1 /\ y=1) 26 | -------------------------------------------------------------------------------- /manual/extra/C-isa2+o-assign+deref-o+o-rb-o.litmus: -------------------------------------------------------------------------------- 1 | C C-ISA2+o-assign+deref-o+o-rb-o 2 | { 3 | a = 1; 4 | x = 2; 5 | c = 0; 6 | } 7 | 8 | P0(int *x, int *a) 9 | { 10 | WRITE_ONCE(*a, 3); 11 | rcu_assign_pointer(*(char **)x, (char *)4); 12 | } 13 | 14 | P1(int *c, int *x) 15 | { 16 | int r1; 17 | r1 = (int)rcu_dereference(*(char **)x); 18 | WRITE_ONCE(*c, 1); 19 | } 20 | 21 | P2(int *a, int *c) 22 | { 23 | int r3; int r2; 24 | r3 = READ_ONCE(*c); 25 | smp_rmb(); 26 | r2 = READ_ONCE(*a); 27 | } 28 | 29 | exists (1:r1 = 4 /\ 2:r3 = 1 /\ 2:r2 = 1) 30 | -------------------------------------------------------------------------------- /manual/extra/C-isa2+o-o+o-o+o-o.litmus: -------------------------------------------------------------------------------- 1 | C C-ISA2+o-o+o-o+o-o 2 | { 3 | a = 1; 4 | x = 2; 5 | } 6 | 7 | P0(int *x, int *a) 8 | { 9 | WRITE_ONCE(*a, 3); 10 | WRITE_ONCE(*x, 4); 11 | } 12 | 13 | P1(int *c, int *x) 14 | { 15 | int r1 = READ_ONCE(*x); 16 | WRITE_ONCE(*c, 1); 17 | } 18 | 19 | P2(int *a, int *c) 20 | { 21 | int r2; int r3; 22 | r3 = READ_ONCE(*c); 23 | r2 = READ_ONCE(*a); 24 | } 25 | 26 | exists (1:r1 = 4 /\ 2:r3 = 1 /\ 2:r2 = 1) 27 | -------------------------------------------------------------------------------- /manual/extra/C-isa2+o-rel+acq-o+o-rb-o.litmus: -------------------------------------------------------------------------------- 1 | C C-ISA2+o-rel+acq-o+o-rb-o 2 | { 3 | a = 1; 4 | x = 2; 5 | } 6 | 7 | P0(int *x, int *a) 8 | { 9 | WRITE_ONCE(*a, 3); 10 | smp_store_release(x, 4); 11 | } 12 | 13 | P1(int *c, int *x) 14 | { 15 | int r1 = smp_load_acquire(x); 16 | WRITE_ONCE(*c, 1); 17 | } 18 | 19 | P2(int *a, int *c) 20 | { 21 | int r3; int r2; 22 | r3 = READ_ONCE(*c); 23 | smp_rmb(); 24 | r2 = READ_ONCE(*a); 25 | } 26 | 27 | exists (1:r1 = 4 /\ 2:r3 = 1 /\ 2:r2 = 1) 28 | -------------------------------------------------------------------------------- /manual/extra/C-isa2+o-rel+acq-rel+acq-o.litmus: -------------------------------------------------------------------------------- 1 | C C-ISA2+o-rel+acq-rel+acq-o 2 | { 3 | a = 1; 4 | x = 2; 5 | } 6 | 7 | P0(int *x, int *a) 8 | { 9 | WRITE_ONCE(*a, 3); 10 | smp_store_release(x, 4); 11 | } 12 | 13 | P1(int *c, int *x) 14 | { 15 | int r1 = smp_load_acquire(x); 16 | smp_store_release(c, 1); 17 | } 18 | 19 | P2(int *a, int *c) 20 | { 21 | int r3; int r2; 22 | r3 = smp_load_acquire(c); 23 | r2 = READ_ONCE(*a); 24 | } 25 | 26 | exists (1:r1 = 4 /\ 2:r3 = 1 /\ 2:r2 = 1) 27 | -------------------------------------------------------------------------------- /manual/extra/C-isa2+o-wb-o+o-mb-o+o-rb-o.litmus: -------------------------------------------------------------------------------- 1 | C C-ISA2+o-wb-o+o-mb-o+o-rb-o 2 | { 3 | a = 1; 4 | x = 2; 5 | } 6 | 7 | P0(int *x, int *a) 8 | { 9 | WRITE_ONCE(*a, 3); 10 | smp_wmb(); 11 | WRITE_ONCE(*x, 4); 12 | } 13 | 14 | P1(int *c, int *x) 15 | { 16 | int r1 = READ_ONCE(*x); 17 | smp_mb(); 18 | WRITE_ONCE(*c, 1); 19 | } 20 | 21 | P2(int *a, int *c) 22 | { 23 | int r2; int r3; 24 | r3 = READ_ONCE(*c); 25 | smp_rmb(); 26 | r2 = READ_ONCE(*a); 27 | } 28 | 29 | exists (1:r1 = 4 /\ 2:r3 = 1 /\ 2:r2 = 1) 30 | -------------------------------------------------------------------------------- /manual/extra/C-lb+ctrl-branch-o+ctrl-branch-o.litmus: -------------------------------------------------------------------------------- 1 | C C-LB+ctrl-branch-o+ctrl-branch-o 2 | { 3 | x = 0; 4 | y = 0; 5 | } 6 | 7 | P0(int *x, int *y) 8 | { 9 | int r1; int r3; 10 | r1 = READ_ONCE(*x); 11 | r3 = (r1 != 0); 12 | if (r3) { 13 | WRITE_ONCE(*y, 1); 14 | } 15 | } 16 | 17 | P1(int *y, int *x) 18 | { 19 | int r2; int r4; 20 | r2 = READ_ONCE(*y); 21 | r4 = (r2 != 0); 22 | if (r4) { 23 | WRITE_ONCE(*x, 1); 24 | } 25 | } 26 | 27 | exists(0:r1=1 /\ 1:r2=1) 28 | -------------------------------------------------------------------------------- /manual/extra/C-lb+deref-addr-o+deref-addr-o.litmus: -------------------------------------------------------------------------------- 1 | C C-LB+deref-addr-o+deref-addr-o 2 | { 3 | x = 0; 4 | y = 0; 5 | } 6 | 7 | P0(int *x, int *y) 8 | { 9 | int r1; int r9; int *r2; 10 | r1 = (int)rcu_dereference(*(char **)x); 11 | r9 = (r1 & 8); 12 | r2 = (y + r9); 13 | WRITE_ONCE(*r2, 1); 14 | } 15 | 16 | P1(int *y, int *x) 17 | { 18 | int r3; int r9; int *r4; 19 | r3 = (int)rcu_dereference(*(char **)y); 20 | r9 = (r3 & 8); 21 | r4 = (x + r9); 22 | WRITE_ONCE(*r4, 1); 23 | } 24 | 25 | exists(0:r1=1 /\ 1:r3=1) 26 | -------------------------------------------------------------------------------- /manual/extra/C-lb+deref-assign+deref-assign.litmus: -------------------------------------------------------------------------------- 1 | C C-LB+deref-assign+deref-assign 2 | { 3 | x = 0; 4 | y = 0; 5 | } 6 | 7 | P0(int *x, int *y) 8 | { 9 | int r1 = (int)rcu_dereference(*(char **)x); 10 | rcu_assign_pointer(*(char **)y, (char *)1); 11 | } 12 | 13 | P1(int *y, int *x) 14 | { 15 | int r3 = (int)rcu_dereference(*(char **)y); 16 | rcu_assign_pointer(*(char **)x, (char *)1); 17 | } 18 | 19 | exists(0:r1=1 /\ 1:r3=1) 20 | -------------------------------------------------------------------------------- /manual/extra/C-lb+deref-o+deref-o.litmus: -------------------------------------------------------------------------------- 1 | C C-LB+deref-once+deref-once 2 | { 3 | x = 0; 4 | y = 0; 5 | } 6 | 7 | P0(int *x, int *y) 8 | { 9 | int r1 = (int)rcu_dereference(*(char **)x); 10 | WRITE_ONCE(*y, 1); 11 | } 12 | 13 | P1(int *y, int *x) 14 | { 15 | int r3 = (int)rcu_dereference(*(char **)y); 16 | WRITE_ONCE(*x, 1); 17 | } 18 | 19 | exists(0:r1=1 /\ 1:r3=1) 20 | -------------------------------------------------------------------------------- /manual/extra/C-lb+o-assign+deref-addr-o.litmus: -------------------------------------------------------------------------------- 1 | C C-LB+o-assign+deref-addr-o 2 | { 3 | x = 0; 4 | y = 0; 5 | } 6 | 7 | P0(int *x, int *y) 8 | { 9 | int r1 = READ_ONCE(*x); 10 | rcu_assign_pointer(*(char **)y, (char *)1); 11 | } 12 | 13 | P1(int *y, int *x) 14 | { 15 | int r3; int r9; int *r4; 16 | r3 = (int)rcu_dereference(*(char **)y); 17 | r9 = (r3 & 8); 18 | r4 = (x + r9); 19 | WRITE_ONCE(*r4, 1); 20 | } 21 | 22 | exists(0:r1=1 /\ 1:r3=1) 23 | -------------------------------------------------------------------------------- /manual/extra/C-lb+o-assign+deref-o.litmus: -------------------------------------------------------------------------------- 1 | C C-LB+o-assign+deref-o 2 | { 3 | x = 0; 4 | y = 0; 5 | } 6 | 7 | P0(int *x, int *y) 8 | { 9 | int r1 = READ_ONCE(*x); 10 | rcu_assign_pointer(*(char **)y, (char *)1); 11 | } 12 | 13 | P1(int *y, int *x) 14 | { 15 | int r3 = (int)rcu_dereference(*(char **)y); 16 | WRITE_ONCE(*x, 1); 17 | } 18 | 19 | exists(0:r1=1 /\ 1:r3=1) 20 | -------------------------------------------------------------------------------- /manual/extra/C-lb+o-assign+o-assign.litmus: -------------------------------------------------------------------------------- 1 | C C-LB+o-assign+o-assign 2 | { 3 | x = 0; 4 | y = 0; 5 | } 6 | 7 | P0(int *x, int *y) 8 | { 9 | int r1 = READ_ONCE(*x); 10 | rcu_assign_pointer(*(char **)y, (char *)1); 11 | } 12 | 13 | P1(int *y, int *x) 14 | { 15 | int r3 = READ_ONCE(*y); 16 | rcu_assign_pointer(*(char **)x, (char *)1); 17 | } 18 | 19 | exists(0:r1=1 /\ 1:r3=1) 20 | -------------------------------------------------------------------------------- /manual/extra/C-lb+o-branch-o+o-branch-o.litmus: -------------------------------------------------------------------------------- 1 | C C-LB+o-branch-o+o-branch-o 2 | { 3 | x = 0; 4 | y = 0; 5 | } 6 | 7 | P0(int *x, int *y) 8 | { 9 | int r1; int r3; 10 | r1 = READ_ONCE(*x); 11 | r3 = (r1 != 0); 12 | if (r3) { 13 | WRITE_ONCE(*y, 1); 14 | } 15 | } 16 | 17 | P1(int *y, int *x) 18 | { 19 | int r2; int r4; 20 | r2 = READ_ONCE(*y); 21 | r4 = (r2 != 0); 22 | if (r4) { 23 | WRITE_ONCE(*x, 1); 24 | } 25 | } 26 | 27 | exists(0:r1=1 /\ 1:r2=1) 28 | -------------------------------------------------------------------------------- /manual/extra/C-lb+o-mb-o+o-mb-o.litmus: -------------------------------------------------------------------------------- 1 | C C-LB+o-mb-o+o-mb-o 2 | { 3 | x = 0; 4 | y = 0; 5 | } 6 | 7 | P0(int *x, int *y) 8 | { 9 | int r1 = READ_ONCE(*x); 10 | smp_mb(); 11 | WRITE_ONCE(*y, 1); 12 | } 13 | 14 | P1(int *y, int *x) 15 | { 16 | int r3 = READ_ONCE(*y); 17 | smp_mb(); 18 | WRITE_ONCE(*x, 1); 19 | } 20 | 21 | exists(0:r1=1 /\ 1:r3=1) 22 | -------------------------------------------------------------------------------- /manual/extra/C-lb+o-o+o-o.litmus: -------------------------------------------------------------------------------- 1 | C C-LB+o-o+o-o 2 | { 3 | x = 0; 4 | y = 0; 5 | } 6 | 7 | P0(int *x, int *y) 8 | { 9 | r1 = READ_ONCE(*x); 10 | WRITE_ONCE(*y, 1); 11 | } 12 | 13 | P1(int *y, int *x) 14 | { 15 | r3 = READ_ONCE(*y); 16 | WRITE_ONCE(*x, 1); 17 | } 18 | 19 | exists(0:r1=1 /\ 1:r3=1) 20 | -------------------------------------------------------------------------------- /manual/extra/C-lb+o-rel+acq-o.litmus: -------------------------------------------------------------------------------- 1 | C C-LB+o-rel+acq-o 2 | { 3 | x = 0; 4 | y = 0; 5 | } 6 | 7 | P0(int *x, int *y) 8 | { 9 | int r1 = READ_ONCE(*x); 10 | smp_store_release(y, 1); 11 | } 12 | 13 | P1(int *y, int *x) 14 | { 15 | int r3 = smp_load_acquire(y); 16 | WRITE_ONCE(*x, 1); 17 | } 18 | 19 | exists(0:r1=1 /\ 1:r3=1) 20 | -------------------------------------------------------------------------------- /manual/extra/C-lb+rel-acq+rel-acq.litmus: -------------------------------------------------------------------------------- 1 | C C-LB+acq-rel+acq-rel 2 | { 3 | x = 0; 4 | y = 0; 5 | } 6 | 7 | P0(int *x, int *y) 8 | { 9 | int r1 = smp_load_acquire(x); 10 | smp_store_release(y, 1); 11 | } 12 | 13 | P1(int *y, int *x) 14 | { 15 | int r3 = smp_load_acquire(y); 16 | smp_store_release(x, 1); 17 | } 18 | 19 | exists(0:r1=1 /\ 1:r3=1) 20 | -------------------------------------------------------------------------------- /manual/extra/C-mp+o-assign+deref-addr-o.litmus: -------------------------------------------------------------------------------- 1 | C C-MP+o-assign+deref-addr-o 2 | { 3 | a = 1; 4 | b = 42; 5 | int *x = &b; 6 | } 7 | 8 | P0(int **x, int *a) 9 | { 10 | WRITE_ONCE(*a, 3); 11 | rcu_assign_pointer(*x, a); 12 | } 13 | 14 | P1(int **x) 15 | { 16 | int *r1 = rcu_dereference(*x); 17 | int r2 = READ_ONCE(*r1); 18 | } 19 | 20 | exists (1:r1 = a /\ 1:r2 = 1) 21 | -------------------------------------------------------------------------------- /manual/extra/C-mp+o-assign+deref-o.litmus: -------------------------------------------------------------------------------- 1 | C C-MP+o-assign+deref-o 2 | { 3 | a = 1; 4 | x = 2; 5 | } 6 | 7 | P0(int *x, int *a) 8 | { 9 | WRITE_ONCE(*a, 3); 10 | rcu_assign_pointer(*(char **)x, (char *)4); 11 | } 12 | 13 | P1(int *a, int *x) 14 | { 15 | int r1; int r2; 16 | r1 = (int)rcu_dereference(*(char **)x); 17 | r2 = READ_ONCE(*a); 18 | } 19 | 20 | exists (1:r1 = 4 /\ 1:r2 = 1) 21 | -------------------------------------------------------------------------------- /manual/extra/C-mp+o-mb-o+o-addr-o.litmus: -------------------------------------------------------------------------------- 1 | C C-MP+o-mb-o+o-addr-o 2 | { 3 | a = 1; 4 | b = 42; 5 | int *x = &b; 6 | } 7 | 8 | P0(int **x, int *a) 9 | { 10 | int *r0 = a; 11 | WRITE_ONCE(*a, 3); 12 | smp_mb(); 13 | WRITE_ONCE(*x, r0); 14 | } 15 | 16 | P1(int **x) 17 | { 18 | int *r1 = READ_ONCE(*x); 19 | int r2 = READ_ONCE(*r1); 20 | } 21 | 22 | exists (1:r1 = a /\ 1:r2 = 1) 23 | -------------------------------------------------------------------------------- /manual/extra/C-mp+o-rel+acq-o.litmus: -------------------------------------------------------------------------------- 1 | C C-MP+o-rel+acq-o 2 | { 3 | a = 1; 4 | x = 2; 5 | } 6 | 7 | P0(int *x, int *a) 8 | { 9 | WRITE_ONCE(*a, 3); 10 | smp_store_release(x, 4); 11 | } 12 | 13 | P1(int *a, int *x) 14 | { 15 | int r1; int r2; 16 | r1 = smp_load_acquire(x); 17 | r2 = READ_ONCE(*a); 18 | } 19 | 20 | exists (1:r1 = 4 /\ 1:r2 = 1) 21 | -------------------------------------------------------------------------------- /manual/extra/C-mp+o-rel+deref-addr-o.litmus: -------------------------------------------------------------------------------- 1 | C C-MP+o-rel+deref-addr-o 2 | { 3 | a = 1; 4 | x = 2; 5 | } 6 | 7 | P0(int *x, int *a) 8 | { 9 | WRITE_ONCE(*a, 3); 10 | smp_store_release(x, 4); 11 | } 12 | 13 | P1(int *a, int *x) 14 | { 15 | int r1; int r9; int *r1000; int r2; 16 | r1 = (int) rcu_dereference(*(char **)x); 17 | r9 = (r1 & 128); 18 | r1000 = (a+r9); 19 | r2 = READ_ONCE(*r1000); 20 | } 21 | 22 | exists (1:r1 = 4 /\ 1:r2 = 1) 23 | -------------------------------------------------------------------------------- /manual/extra/C-say-captain.litmus: -------------------------------------------------------------------------------- 1 | C C-say-captain 2 | { 3 | x = 0; y = 0; z = 0; 4 | } 5 | 6 | P0(int *x, int *y) 7 | { 8 | WRITE_ONCE(*x, 1); 9 | synchronize_rcu(); 10 | WRITE_ONCE(*y, 1); 11 | } 12 | 13 | P1(int *y, int *z) 14 | { 15 | int r1; 16 | rcu_read_lock(); 17 | WRITE_ONCE(*z, 1); 18 | r1 = READ_ONCE(*y); 19 | rcu_read_unlock(); 20 | } 21 | 22 | P2(int *x, int *z) 23 | { 24 | int r2; int r3; 25 | r2 = READ_ONCE(*z); 26 | synchronize_rcu(); 27 | r3 = READ_ONCE(*x); 28 | } 29 | 30 | exists (1:r1=1 /\ 2:r2=1 /\ 2:r3=0) 31 | -------------------------------------------------------------------------------- /manual/extra/C-sb+o-o+o-o.litmus: -------------------------------------------------------------------------------- 1 | C C-SB+o-o+o-o 2 | { 3 | x = 0; 4 | y = 0; 5 | } 6 | 7 | P0(int *x, int *y) 8 | { 9 | int r2; 10 | WRITE_ONCE(*x, 1); 11 | r2 = READ_ONCE(*y); 12 | } 13 | 14 | P1(int *y, int *x) 15 | { 16 | int r4; 17 | WRITE_ONCE(*y, 1); 18 | r4 = READ_ONCE(*x); 19 | } 20 | 21 | exists (0:r2=0 /\ 1:r4=0) 22 | -------------------------------------------------------------------------------- /manual/extra/C-sb+rel-acq+rel-acq.litmus: -------------------------------------------------------------------------------- 1 | C C-SB+rel-acq+rel-acq 2 | { 3 | x = 0; 4 | y = 0; 5 | } 6 | 7 | P0(int *x, int *y) 8 | { 9 | int r2; 10 | smp_store_release(x, 1); 11 | r2 = smp_load_acquire(y); 12 | } 13 | 14 | P1(int *y, int *x) 15 | { 16 | int r4; 17 | smp_store_release(y, 1); 18 | r4 = smp_load_acquire(x); 19 | } 20 | 21 | exists (0:r2=0 /\ 1:r4=0) 22 | -------------------------------------------------------------------------------- /manual/extra/C-sb+rel-o+rel-o.litmus: -------------------------------------------------------------------------------- 1 | C C-SB+rel-o+rel-o 2 | { 3 | x = 0; 4 | y = 0; 5 | } 6 | 7 | P0(int *x, int *y) 8 | { 9 | int r2; 10 | smp_store_release(x, 1); 11 | r2 = READ_ONCE(*y); 12 | } 13 | 14 | P1(int *y, int *x) 15 | { 16 | int r4; 17 | smp_store_release(y, 1); 18 | r4 = READ_ONCE(*x); 19 | } 20 | 21 | exists (0:r2=0 /\ 1:r4=0) 22 | -------------------------------------------------------------------------------- /manual/extra/C-wrc+assign+deref-addr-assign+o-rb-o.litmus: -------------------------------------------------------------------------------- 1 | C C-WRC+assign+deref-addr-assign+o-rb-o 2 | { 3 | b = 42; 4 | int *x = &b; 5 | y = 3; 6 | } 7 | 8 | P0(int *y) 9 | { 10 | rcu_assign_pointer(*(void **)y, (void *)1); 11 | } 12 | 13 | P1(int *y, int **x) 14 | { 15 | void *r0 = rcu_dereference(*(void **)y); 16 | int r3 = (int)r0; 17 | rcu_assign_pointer(*x, y); 18 | } 19 | 20 | P2(int **x) 21 | { 22 | int *r1 = READ_ONCE(*x); 23 | smp_rmb(); 24 | int r2 = READ_ONCE(*r1); 25 | } 26 | 27 | exists (1:r3=1 /\ 2:r1=y /\ 2:r2=3) 28 | -------------------------------------------------------------------------------- /manual/extra/C-wrc+assign+deref-addr-o+o-rb-o.litmus: -------------------------------------------------------------------------------- 1 | C C-WRC+assign+deref-addr-o+o-rb-o 2 | { 3 | int b = 42; 4 | int *x = b; 5 | y = 3; 6 | } 7 | 8 | P0(int *y) 9 | { 10 | rcu_assign_pointer(*(char **)y, (char *)1); 11 | } 12 | 13 | P1(int *y, int **x) 14 | { 15 | int r3 = (int)rcu_dereference(*(char **)y); 16 | WRITE_ONCE(*x, y); 17 | } 18 | 19 | P2(int **x) 20 | { 21 | int *r1; int r2; 22 | r1 = READ_ONCE(*x); 23 | smp_rmb(); 24 | r2 = READ_ONCE(*r1); 25 | } 26 | 27 | exists (1:r3=1 /\ 2:r1=y /\ 2:r2=3) 28 | -------------------------------------------------------------------------------- /manual/extra/C-wrc+assign+deref-assign+deref-o.litmus: -------------------------------------------------------------------------------- 1 | C C-WRC+assign+deref-assign+deref-o 2 | { 3 | x = 0; 4 | y = 0; 5 | } 6 | 7 | P0(int *y) 8 | { 9 | rcu_assign_pointer(*(char **)y, (char *)1); 10 | } 11 | 12 | P1(int *y, int *x) 13 | { 14 | int r3 = (int)rcu_dereference(*(char **)y); 15 | rcu_assign_pointer(*(char **)x, (char *)1); 16 | } 17 | 18 | P2(int *x, int *y) 19 | { 20 | int r1; int r2; 21 | r1 = (int)rcu_dereference(*(char **)x); 22 | r2 = READ_ONCE(*y); 23 | } 24 | 25 | exists (1:r3=1 /\ 2:r1=1 /\ 2:r2=0) 26 | -------------------------------------------------------------------------------- /manual/extra/C-wrc+assign+deref-o+o-rb-o.litmus: -------------------------------------------------------------------------------- 1 | C C-WRC+assign+deref-o+o-rb-o 2 | { 3 | x = 0; 4 | y = 0; 5 | } 6 | 7 | P0(int *y) 8 | { 9 | rcu_assign_pointer(*(char **)y, (char *)1); 10 | } 11 | 12 | P1(int *y, int *x) 13 | { 14 | int r3 = rcu_dereference(*(char **)y); 15 | WRITE_ONCE(*x, 1); 16 | } 17 | 18 | P2(int *x, int *y) 19 | { 20 | int r1; int r2; 21 | r1 = READ_ONCE(*x); 22 | smp_rmb(); 23 | r2 = READ_ONCE(*y); 24 | } 25 | 26 | exists (1:r3=1 /\ 2:r1=1 /\ 2:r2=0) 27 | -------------------------------------------------------------------------------- /manual/extra/C-wrc+o+o-assign+deref-addr-o.litmus: -------------------------------------------------------------------------------- 1 | C C-WRC+o+o-assign+deref-addr-o 2 | { 3 | b = 42; 4 | int *x = &b; 5 | y = 3; 6 | } 7 | 8 | P0(int *y) 9 | { 10 | WRITE_ONCE(*y, 1); 11 | } 12 | 13 | P1(int *y, int **x) 14 | { 15 | int r3; 16 | r3 = READ_ONCE(*y); 17 | rcu_assign_pointer(*x, y); 18 | } 19 | 20 | P2(int **x) 21 | { 22 | int *r1; int r2; 23 | r1 = rcu_dereference(*x); 24 | r2 = READ_ONCE(*r1); 25 | } 26 | 27 | exists (1:r3=1 /\ 2:r1=y /\ 2:r2=3) 28 | -------------------------------------------------------------------------------- /manual/extra/C-wrc+o+o-o+o-o.litmus: -------------------------------------------------------------------------------- 1 | C C-WRC+o+o-o+o-o 2 | { 3 | x = 0; 4 | y = 0; 5 | } 6 | 7 | P0(int *y) 8 | { 9 | WRITE_ONCE(*y, 1); 10 | } 11 | 12 | P1(int *y, int *x) 13 | { 14 | int r3 = READ_ONCE(*y); 15 | WRITE_ONCE(*x, 1); 16 | } 17 | 18 | P2(int *x, int *y) 19 | { 20 | int r1; int r2; 21 | r1 = READ_ONCE(*x); 22 | r2 = READ_ONCE(*y); 23 | } 24 | 25 | exists (1:r3=1 /\ 2:r1=1 /\ 2:r2=0) 26 | -------------------------------------------------------------------------------- /manual/extra/C-wrc+o+o-rel+acq-o.litmus: -------------------------------------------------------------------------------- 1 | C C-WRC+o+o-rel+acq-o 2 | { 3 | x = 0; 4 | y = 0; 5 | } 6 | 7 | P0(int *y) 8 | { 9 | WRITE_ONCE(*y, 1); 10 | } 11 | 12 | P1(int *y, int *x) 13 | { 14 | int r3 = READ_ONCE(*y); 15 | smp_store_release(x, 1); 16 | } 17 | 18 | P2(int *x, int *y) 19 | { 20 | int r1; int r2; 21 | r1 = smp_load_acquire(x); 22 | r2 = READ_ONCE(*y); 23 | } 24 | 25 | exists (1:r3=1 /\ 2:r1=1 /\ 2:r2=0) 26 | -------------------------------------------------------------------------------- /manual/extra/C-wrc+o-mb-o+o-mb-o2.litmus: -------------------------------------------------------------------------------- 1 | C C-WRC+o-mb-o+o-mb-o2 2 | { 3 | x = 0; 4 | y = 0; 5 | } 6 | 7 | P0(int *x) 8 | { 9 | WRITE_ONCE(*x, 1); 10 | } 11 | 12 | P1(int *y, int *x) 13 | { 14 | int r3 = READ_ONCE(*x); 15 | smp_mb(); 16 | WRITE_ONCE(*y, 1); 17 | } 18 | 19 | P2(int *x, int *y) 20 | { 21 | int r1; int r2; 22 | r1 = READ_ONCE(*y); 23 | smp_mb(); 24 | r2 = READ_ONCE(*x); 25 | } 26 | 27 | exists (1:r3=1 /\ 2:r1=1 /\ 2:r2=0) 28 | -------------------------------------------------------------------------------- /manual/extra/C-wrc+o-mb-o+o-rb-o.litmus: -------------------------------------------------------------------------------- 1 | C C-WRC+o-mb-o+o-rb-o 2 | { 3 | x = 0; 4 | y = 0; 5 | } 6 | 7 | P0(int *y) 8 | { 9 | WRITE_ONCE(*y, 1); 10 | } 11 | 12 | P1(int *y, int *x) 13 | { 14 | int r3 = READ_ONCE(*y); 15 | smp_mb(); 16 | WRITE_ONCE(*x, 1); 17 | } 18 | 19 | P2(int *x, int *y) 20 | { 21 | int r1; int r2; 22 | r1 = READ_ONCE(*x); 23 | smp_rmb(); 24 | r2 = READ_ONCE(*y); 25 | } 26 | 27 | exists (1:r3=1 /\ 2:r1=1 /\ 2:r2=0) 28 | -------------------------------------------------------------------------------- /manual/extra/C-wrc+o-mb-o+o-rb-o2.litmus: -------------------------------------------------------------------------------- 1 | C C-WRC+o-mb-o+o-rb-o2 2 | { 3 | x = 0; 4 | y = 0; 5 | } 6 | 7 | P0(int *x) 8 | { 9 | WRITE_ONCE(*x, 1); 10 | } 11 | 12 | P1(int *y, int *x) 13 | { 14 | int r3 = READ_ONCE(*x); 15 | smp_mb(); 16 | WRITE_ONCE(*y, 1); 17 | } 18 | 19 | P2(int *x, int *y) 20 | { 21 | int r1; int r2; 22 | r1 = READ_ONCE(*y); 23 | smp_rmb(); 24 | r2 = READ_ONCE(*x); 25 | } 26 | 27 | exists (1:r3=1 /\ 2:r1=1 /\ 2:r2=0) 28 | -------------------------------------------------------------------------------- /manual/extra/C-wrc+rel+acq-o+o-rb-o.litmus: -------------------------------------------------------------------------------- 1 | C C-WRC+rel+acq-o+o-rb-o 2 | { 3 | x = 0; 4 | y = 0; 5 | } 6 | 7 | P0(int *y) 8 | { 9 | smp_store_release(y, 1); 10 | } 11 | 12 | P1(int *y, int *x) 13 | { 14 | int r3 = smp_load_acquire(y); 15 | WRITE_ONCE(*x, 1); 16 | } 17 | 18 | P2(int *x, int *y) 19 | { 20 | int r1; int r2; 21 | r1 = READ_ONCE(*x); 22 | smp_rmb(); 23 | r2 = READ_ONCE(*y); 24 | } 25 | 26 | exists (1:r3=1 /\ 2:r1=1 /\ 2:r2=0) 27 | -------------------------------------------------------------------------------- /manual/extra/C-wrc+rel+acq-rel+acq-o.litmus: -------------------------------------------------------------------------------- 1 | C C-WRC+rel+acq-rel+acq-o 2 | { 3 | x = 0; 4 | y = 0; 5 | } 6 | 7 | P0(int *y) 8 | { 9 | smp_store_release(y, 1); 10 | } 11 | 12 | P1(int *y, int *x) 13 | { 14 | int r3 = smp_load_acquire(y); 15 | smp_store_release(x, 1); 16 | } 17 | 18 | P2(int *x, int *y) 19 | { 20 | int r1; int r2; 21 | r1 = smp_load_acquire(x); 22 | r2 = READ_ONCE(*y); 23 | } 24 | 25 | exists (1:r3=1 /\ 2:r1=1 /\ 2:r2=0) 26 | -------------------------------------------------------------------------------- /manual/extra/C-wrc+rel+acq-rel+acq-rel.litmus: -------------------------------------------------------------------------------- 1 | C C-WRC+rel+acq-rel+acq-rel 2 | { 3 | x = 0; 4 | y = 0; 5 | } 6 | 7 | P0(int *y) 8 | { 9 | smp_store_release(y, 1); 10 | } 11 | 12 | P1(int *y, int *x) 13 | { 14 | int r3 = smp_load_acquire(y); 15 | smp_store_release(x, 1); 16 | } 17 | 18 | P2(int *x, int *y) 19 | { 20 | int r1; int r2; 21 | r1 = smp_load_acquire(x); 22 | r2 = smp_load_acquire(y); 23 | } 24 | 25 | exists (1:r3=1 /\ 2:r1=1 /\ 2:r2=0) 26 | -------------------------------------------------------------------------------- /manual/extra/README: -------------------------------------------------------------------------------- 1 | Harvest Jade Alglave's extras litmus tests 2 | -------------------------------------------------------------------------------- /manual/extra/dist-2+2w+rel+lderef-addr-o+o-wmb-o.litmus: -------------------------------------------------------------------------------- 1 | LISA dist-2+2w+rel+lderef-addr-o+o-wmb-o 2 | { 3 | x = 0; 4 | y = 0; 5 | } 6 | P0 | P1 | P2 ; 7 | w[release] x 1 | r[lderef] r1 x | w[once] y 1 ; 8 | | mov r9 (xor r1 r1) | f[wmb] ; 9 | | mov r4 (add y r9) | ; 10 | | w[once] r4 2 | w[once] x 2 ; 11 | exists (1:r1=1 /\ x=1 /\ y=1) 12 | 13 | -------------------------------------------------------------------------------- /manual/extra/isa2+o-rel+acq-rel+lderef-o.litmus: -------------------------------------------------------------------------------- 1 | LISA ISA2+o-rel+acq-rel+lderef-o 2 | { 3 | a = 1; 4 | x = 2; 5 | } 6 | P0 | P1 | P2; 7 | w[once] a 3 | r[acquire] r1 x | r[lderef] r3 c ; 8 | w[release] x 4 | w[release] c 1 | r[once] r2 a ; 9 | exists (1:r1 = 4 /\ 2:r3 = 1 /\ 2:r2 = 1) 10 | -------------------------------------------------------------------------------- /manual/extra/isa2+o-rel+lderef-addr-o+o-rb-o.litmus: -------------------------------------------------------------------------------- 1 | LISA ISA2+o-rel+lderef-addr-o+o-rb-o 2 | { 3 | a = 1; 4 | x = 2; 5 | } 6 | P0 | P1 | P2 ; 7 | w[once] a 3 | r[lderef] r1 x | r[once] r3 c ; 8 | | mov r9 (xor r1 r1) | f[rmb] ; 9 | | mov r3 (add c r9) | ; 10 | w[release] x 4 | w[once] r3 1 | r[once] r2 a ; 11 | exists (1:r1 = 4 /\ 2:r3 = 1 /\ 2:r2 = 1) 12 | -------------------------------------------------------------------------------- /manual/extra/isa2+o-rel+lderef-o+o-rb-o.litmus: -------------------------------------------------------------------------------- 1 | LISA ISA2+o-rel+lderef-o+o-rb-o 2 | { 3 | a = 1; 4 | x = 2; 5 | } 6 | P0 | P1 | P2; 7 | w[once] a 3 | r[lderef] r1 x | r[once] r3 c ; 8 | | | f[rmb] ; 9 | w[release] x 4 | w[once] c 1 | r[once] r2 a ; 10 | exists (1:r1 = 4 /\ 2:r3 = 1 /\ 2:r2 = 1) 11 | -------------------------------------------------------------------------------- /manual/extra/lb+acq-rel+acq-rel.litmus: -------------------------------------------------------------------------------- 1 | LISA LB+acq-rel+acq-rel (*Paul says forbid*) 2 | { 3 | x = 0; 4 | y = 0; 5 | } 6 | P0 | P1 ; 7 | r[acquire] r1 x | r[acquire] r3 y ; 8 | w[release] y 1 | w[release] x 1 ; 9 | exists(0:r1=1 /\ 1:r3=1) 10 | -------------------------------------------------------------------------------- /manual/extra/lb+deref-addr-o+lderef-addr-o.litmus: -------------------------------------------------------------------------------- 1 | LISA LB+deref-addr-o+lderef-addr-o 2 | { 3 | x = 0; 4 | y = 0; 5 | } 6 | P0 | P1 ; 7 | r[deref] r1 x | r[lderef] r3 y ; 8 | mov r9 (xor r1 r1) | mov r9 (xor r3 r3) ; 9 | mov r2 (add y r9) | mov r4 (add x r9) ; 10 | w[once] r2 1 | w[once] r4 1 ; 11 | exists(0:r1=1 /\ 1:r3=1) 12 | -------------------------------------------------------------------------------- /manual/extra/mp+o-o+o-o.litmus: -------------------------------------------------------------------------------- 1 | LISA MP+oo+oo 2 | { 3 | a = 1; 4 | x = 2; 5 | } 6 | P0 | P1 ; 7 | w[once] a 3 | r[once] r1 x ; 8 | w[once] x 4 | r[once] r2 a ; 9 | exists (1:r1 = 4 /\ 1:r2 = 1) 10 | -------------------------------------------------------------------------------- /manual/extra/mp+o-rel+lderef-addr-o.litmus: -------------------------------------------------------------------------------- 1 | LISA MP+o-rel+lderef-addr-o 2 | { 3 | a = 1; 4 | b = 42; 5 | x = b; 6 | 0:r0 = a; 7 | } 8 | P0 | P1 ; 9 | w[once] a 3 | r[lderef] r1 x ; 10 | w[release] x r0 | r[once] r2 r1 ; 11 | exists (1:r1 = a /\ 1:r2 = 1) 12 | -------------------------------------------------------------------------------- /manual/extra/mp+o-wb-o+o-data+rb_dep-o.litmus: -------------------------------------------------------------------------------- 1 | LISA MP+o-wb-o+o-data+rb_dep-o 2 | { 3 | a = 1; 4 | b = 42; 5 | x = b; 6 | 0:r0 = a; 7 | } 8 | P0 | P1 ; 9 | w[once] a 3 | r[once] r1 x ; 10 | f[wmb] | f[rb_dep] ; 11 | w[once] x r0 | r[once] r2 r1 ; 12 | exists (1:r1 = a /\ 1:r2 = 1) 13 | -------------------------------------------------------------------------------- /manual/extra/mp+o-wb-o+o-rb_dep+data-o.litmus: -------------------------------------------------------------------------------- 1 | LISA MP+o-wb-o+o-rb_dep+data-o 2 | { 3 | a = 1; 4 | b = 42; 5 | x = b; 6 | 0:r0 = a; 7 | } 8 | P0 | P1 ; 9 | w[once] a 3 | r[once] r1 x ; 10 | f[wmb] | f[rb_dep] ; 11 | w[once] x r0 | r[once] r2 r1 ; 12 | exists (1:r1 = a /\ 1:r2 = 1) 13 | -------------------------------------------------------------------------------- /manual/extra/rel-seq/C-rel-seq1.litmus: -------------------------------------------------------------------------------- 1 | C C-rel-seq1 2 | "" 3 | { 4 | } 5 | 6 | P0(int *x, int *y) 7 | { 8 | WRITE_ONCE(*x, 1); 9 | smp_store_release(y, 1); 10 | WRITE_ONCE(*y, 2); 11 | } 12 | 13 | P1(int *y, int *x) 14 | { 15 | r1 = smp_load_acquire(y); 16 | r2 = READ_ONCE(*x); 17 | } 18 | 19 | exists (1:r1=2 /\ 1:r2=0) 20 | -------------------------------------------------------------------------------- /manual/extra/rel-seq/C-rel-seq2.litmus: -------------------------------------------------------------------------------- 1 | C C-rel-seq2 2 | "" 3 | { 4 | } 5 | 6 | P0(int *x, int *y) 7 | { 8 | WRITE_ONCE(*x, 1); 9 | smp_store_release(y, 1); 10 | WRITE_ONCE(*y, 2); 11 | } 12 | 13 | P1(int *y) 14 | { 15 | r1 = xchg_relaxed(y, 3); 16 | } 17 | 18 | P2(int *x, int *y) 19 | { 20 | r1 = smp_load_acquire(y); 21 | r2 = READ_ONCE(*x); 22 | } 23 | 24 | exists (1:r1=2 /\ 2:r1=3 /\ 2:r2=0) 25 | -------------------------------------------------------------------------------- /manual/extra/rel-seq/C-rel-seq3.litmus: -------------------------------------------------------------------------------- 1 | C C-rel-seq3 2 | "" 3 | { 4 | } 5 | 6 | P0(int *x, int *y) 7 | { 8 | WRITE_ONCE(*x, 1); 9 | smp_store_release(y, 1); 10 | } 11 | 12 | P1(int *y) 13 | { 14 | r1 = READ_ONCE(*y); 15 | WRITE_ONCE(*y, 2); 16 | } 17 | 18 | P2(int *y) 19 | { 20 | r1 = xchg_relaxed(y, 3); 21 | } 22 | 23 | P3(int *x, int *y) 24 | { 25 | r1 = smp_load_acquire(y); 26 | r2 = READ_ONCE(*x); 27 | } 28 | 29 | exists (1:r1=1 /\ 2:r1=2 /\ 3:r1=3 /\ 3:r2=0) 30 | -------------------------------------------------------------------------------- /manual/extra/rel-seq/C-rel-seq4.litmus: -------------------------------------------------------------------------------- 1 | C C-rel-seq4 2 | "" 3 | { 4 | } 5 | 6 | P0(int *x, int *y) 7 | { 8 | WRITE_ONCE(*x, 1); 9 | smp_store_release(y, 1); 10 | r1 = READ_ONCE(*y); 11 | WRITE_ONCE(*y, 3); 12 | } 13 | 14 | P1(int *y) 15 | { 16 | WRITE_ONCE(*y, 2); 17 | } 18 | 19 | P2(int *x, int *y) 20 | { 21 | r1 = smp_load_acquire(y); 22 | r2 = READ_ONCE(*x); 23 | } 24 | 25 | exists (0:r1=2 /\ 2:r1=3 /\ 2:r2=0) 26 | -------------------------------------------------------------------------------- /manual/extra/wrc+o+o-rel+lderef-addr-o.litmus: -------------------------------------------------------------------------------- 1 | LISA WRC+o+o-rel+lderef-addr-o (*Paul says allowed*) 2 | { 3 | x = b; 4 | b = 42; 5 | y = 3; 6 | 1:r0 = y; 7 | } 8 | P0 | P1 | P2 ; 9 | w[once] y 1 | r[once] r3 y | r[lderef] r1 x ; 10 | | w[release] x r0 | r[once] r2 r1 ; 11 | exists (1:r3=1 /\ 2:r1=y /\ 2:r2=3) 12 | 13 | -------------------------------------------------------------------------------- /manual/extra/wrc+o-mb-o+o-mb-o.litmus: -------------------------------------------------------------------------------- 1 | LISA WRC+o-mb-o+o-mb-o 2 | { 3 | x = 0; 4 | y = 0; 5 | } 6 | P0 | P1 | P2 ; 7 | w[once] y 1 | r[once] r3 y | r[once] r1 x ; 8 | | f[mb] | f[mb] ; 9 | | w[once] x 1 | r[once] r2 y ; 10 | exists (1:r3=1 /\ 2:r1=1 /\ 2:r2=0) 11 | 12 | -------------------------------------------------------------------------------- /manual/kernel/C-2+2W+o-r+o-r.litmus: -------------------------------------------------------------------------------- 1 | C C-2+2W+o-r+o-r 2 | { 3 | } 4 | 5 | P0(int *x0, int *x1) 6 | { 7 | WRITE_ONCE(*x0, 1); 8 | smp_store_release(x1, 2); 9 | } 10 | 11 | 12 | P1(int *x0, int *x1) 13 | { 14 | WRITE_ONCE(*x1, 1); 15 | smp_store_release(x0, 2); 16 | } 17 | 18 | exists (x0=1 /\ x1=1) 19 | -------------------------------------------------------------------------------- /manual/kernel/C-2+2W+o-sync-o+o-sync-o.litmus: -------------------------------------------------------------------------------- 1 | C C-2+2W+o-sync-o+o-sync-o.litmus 2 | 3 | (* 4 | * Result: Never 5 | *) 6 | 7 | { 8 | } 9 | 10 | P0(int *x0, int *x1) 11 | { 12 | WRITE_ONCE(*x0, 1); 13 | synchronize_rcu(); 14 | WRITE_ONCE(*x1, 2); 15 | } 16 | 17 | 18 | P1(int *x0, int *x1) 19 | { 20 | WRITE_ONCE(*x1, 1); 21 | synchronize_rcu(); 22 | WRITE_ONCE(*x0, 2); 23 | } 24 | 25 | exists (x0=1 /\ x1=1) 26 | -------------------------------------------------------------------------------- /manual/kernel/C-2+2W+o-wmb-o+o-wmb-o.litmus: -------------------------------------------------------------------------------- 1 | C C-2+2W+o-wmb-o+o-wmb-o-LPC 2 | { 3 | } 4 | 5 | P0(int *x0, int *x1) 6 | { 7 | WRITE_ONCE(*x0, 1); 8 | smp_wmb(); 9 | WRITE_ONCE(*x1, 2); 10 | } 11 | 12 | 13 | P1(int *x0, int *x1) 14 | { 15 | int r2; 16 | 17 | WRITE_ONCE(*x1, 1); 18 | smp_wmb(); 19 | WRITE_ONCE(*x0, 2); 20 | } 21 | 22 | exists (x0=1 /\ x1=1) 23 | -------------------------------------------------------------------------------- /manual/kernel/C-AlanStern-ISA2+wmb+o-r+a-o.litmus: -------------------------------------------------------------------------------- 1 | C C-AlanStern-ISA2+wmb+o-r+a-o.litmus 2 | 3 | { 4 | int *z = &y; 5 | } 6 | 7 | P0(int *x, int *y) 8 | { 9 | WRITE_ONCE(*x, 1); 10 | smp_wmb(); 11 | WRITE_ONCE(*y, 1); 12 | } 13 | 14 | P1(int *y, int **z,int *x) 15 | { 16 | int r1 = READ_ONCE(*y); 17 | smp_store_release(z, x); 18 | } 19 | 20 | P2(int **z) 21 | { 22 | int *r1; int r2; 23 | r1 = smp_load_acquire(z); 24 | r2 = READ_ONCE(*r1); 25 | } 26 | 27 | exists 28 | (1:r1=1 /\ 2:r1=x /\ 2:r2=0) 29 | -------------------------------------------------------------------------------- /manual/kernel/C-AlanStern-WRC+o-unlock+lock-o.litmus: -------------------------------------------------------------------------------- 1 | C C-AlanStern-WRC+o-unlock+lock-o.litmus 2 | 3 | { 4 | y=1; 5 | } 6 | 7 | P0(int *x, int *y) 8 | { 9 | WRITE_ONCE(*x, 1); 10 | } 11 | 12 | P1(int *x, int *y) 13 | { 14 | int r1 = READ_ONCE(*x); 15 | smp_store_release(y, 0); 16 | } 17 | 18 | P2(int *x, int *y) 19 | { 20 | int r1 = xchg_acquire(y, 1); 21 | int r2 = READ_ONCE(*x); 22 | } 23 | 24 | exists 25 | (1:r1=1 /\ 2:r1=0 /\ 2:r2=0) 26 | -------------------------------------------------------------------------------- /manual/kernel/C-ISA2+l-o-o-ul+l-o-o-ul+o-mb-o.litmus: -------------------------------------------------------------------------------- 1 | C C-ISA2+l-o-o-ul+l-o-o-ul+o-mb-o 2 | 3 | {} 4 | 5 | P0(int *x, int *y, int *z, spinlock_t *a) 6 | { 7 | spin_lock(a); 8 | WRITE_ONCE(*x,1); 9 | WRITE_ONCE(*y,1); 10 | spin_unlock(a); 11 | } 12 | 13 | P1(int *x, int *y, int *z, spinlock_t *a) 14 | { 15 | spin_lock(a); 16 | int r0 = READ_ONCE(*y); 17 | WRITE_ONCE(*z,1); 18 | spin_unlock(a); 19 | } 20 | 21 | P2(int *x, int *y, int *z) 22 | { 23 | int r0 = READ_ONCE(*z); 24 | smp_mb(); 25 | int r1 = READ_ONCE(*x); 26 | } 27 | 28 | exists (1:r0=1 /\ 2:r0=1 /\ 2:r1=0) 29 | -------------------------------------------------------------------------------- /manual/kernel/C-IngoMolnar-1Cond.litmus: -------------------------------------------------------------------------------- 1 | C C-IngoMolnar-1Cond.litmus 2 | 3 | { 4 | } 5 | 6 | P0(int *a, int *b) 7 | { 8 | int r1; 9 | 10 | r1 = READ_ONCE(*a); 11 | if (r1) 12 | WRITE_ONCE(*b, 1); 13 | } 14 | 15 | P1(int *a, int *b) 16 | { 17 | int r3; 18 | 19 | r3 = READ_ONCE(*b); 20 | smp_mb(); 21 | WRITE_ONCE(*a, 1); 22 | } 23 | 24 | exists 25 | (0:r1=1 /\ 1:r3=1) 26 | -------------------------------------------------------------------------------- /manual/kernel/C-IngoMolnar-2If.litmus: -------------------------------------------------------------------------------- 1 | C C-IngoMolnar-2If.litmus 2 | 3 | { 4 | } 5 | 6 | P0(int *a, int *b) 7 | { 8 | int r1; 9 | 10 | r1 = READ_ONCE(*a); 11 | if (r1) 12 | WRITE_ONCE(*b, 1); 13 | if (r1 == 0) 14 | WRITE_ONCE(*b, 2); 15 | } 16 | 17 | P1(int *a, int *b) 18 | { 19 | int r2; 20 | 21 | r2 = READ_ONCE(*b); 22 | smp_mb(); 23 | WRITE_ONCE(*a, 1); 24 | } 25 | 26 | exists 27 | (0:r1=1 /\ 1:r2=1) 28 | -------------------------------------------------------------------------------- /manual/kernel/C-IngoMolnar-2Reads.litmus: -------------------------------------------------------------------------------- 1 | C C-IngoMolnar-2Reads.litmus 2 | 3 | { 4 | } 5 | 6 | P0(int *a, int *b) 7 | { 8 | int r1; 9 | int r2; 10 | 11 | r1 = READ_ONCE(*a); 12 | if (r1) 13 | WRITE_ONCE(*b, 1); 14 | r2 = READ_ONCE(*a); 15 | if (r2 == 0) 16 | WRITE_ONCE(*b, 2); 17 | } 18 | 19 | P1(int *a, int *b) 20 | { 21 | int r3; 22 | 23 | r3 = READ_ONCE(*b); 24 | smp_mb(); 25 | WRITE_ONCE(*a, 1); 26 | } 27 | 28 | exists 29 | (0:r1=1 /\ 1:r3=1) 30 | -------------------------------------------------------------------------------- /manual/kernel/C-IngoMolnar-After.litmus: -------------------------------------------------------------------------------- 1 | C C-IngoMolnar-After.litmus 2 | 3 | { 4 | } 5 | 6 | P0(int *a, int *b, int *c) 7 | { 8 | int r1; 9 | 10 | r1 = READ_ONCE(*a); 11 | if (r1) 12 | WRITE_ONCE(*b, 1); 13 | else 14 | WRITE_ONCE(*b, 2); 15 | WRITE_ONCE(*c, 1); 16 | } 17 | 18 | P1(int *a, int *c) 19 | { 20 | int r2; 21 | 22 | r2 = READ_ONCE(*c); 23 | smp_mb(); 24 | WRITE_ONCE(*a, 1); 25 | } 26 | 27 | exists 28 | (0:r1=1 /\ 1:r2=1) 29 | -------------------------------------------------------------------------------- /manual/kernel/C-IngoMolnar.litmus: -------------------------------------------------------------------------------- 1 | C C-IngoMolnar.litmus 2 | 3 | { 4 | } 5 | 6 | P0(int *a, int *b) 7 | { 8 | int r1; 9 | 10 | r1 = READ_ONCE(*a); 11 | if (r1) 12 | WRITE_ONCE(*b, 1); 13 | else 14 | WRITE_ONCE(*b, 2); 15 | } 16 | 17 | P1(int *a, int *b) 18 | { 19 | int r2; 20 | 21 | r2 = READ_ONCE(*b); 22 | smp_mb(); 23 | WRITE_ONCE(*a, 1); 24 | } 25 | 26 | exists 27 | (0:r1=1 /\ 1:r2=1) 28 | -------------------------------------------------------------------------------- /manual/kernel/C-LB+l-o-o-ul+l-o-o-ul+o-mb-o.litmus: -------------------------------------------------------------------------------- 1 | C C-LB+l-o-o-ul+l-o-o-ul+o-mb-o 2 | 3 | {} 4 | 5 | 6 | P0(int *x, int *y, int *z, spinlock_t *a) 7 | { 8 | spin_lock(a); 9 | int r0 = READ_ONCE(*x); 10 | WRITE_ONCE(*z,1); 11 | spin_unlock(a); 12 | } 13 | 14 | P1(int *x, int *y, int *z, spinlock_t *a) 15 | { 16 | spin_lock(a); 17 | int r0 = READ_ONCE(*z); 18 | WRITE_ONCE(*y,1); 19 | spin_unlock(a); 20 | } 21 | 22 | P2(int *x, int *y) 23 | { 24 | int r0 = READ_ONCE(*y); 25 | smp_mb(); 26 | WRITE_ONCE(*x,1); 27 | } 28 | 29 | exists (0:r0=1 /\ 1:r0=1 /\ 2:r0=1) 30 | -------------------------------------------------------------------------------- /manual/kernel/C-LB+l-o-ul-l-o-ul+o-mb-o.litmus: -------------------------------------------------------------------------------- 1 | C C-LB+l-o-ul-l-o-ul+o-mb-o 2 | 3 | {} 4 | 5 | P0(int *x, int *y, spinlock_t *a, spinlock_t *b) 6 | { 7 | spin_lock(a); 8 | int r0 = READ_ONCE(*x); 9 | spin_unlock(a); 10 | spin_lock(b); 11 | WRITE_ONCE(*y,1); 12 | spin_unlock(b); 13 | } 14 | 15 | P1(int *x, int *y) 16 | { 17 | int r0 = READ_ONCE(*y); 18 | smp_mb(); 19 | WRITE_ONCE(*x,1); 20 | } 21 | 22 | exists (0:r0=1 /\ 1:r0=1) 23 | -------------------------------------------------------------------------------- /manual/kernel/C-MP+l-o-ul-l-o-ul+o-mb-o.litmus: -------------------------------------------------------------------------------- 1 | C C-MP+l-o-ul-l-o-ul+o-mb-o 2 | 3 | {} 4 | 5 | 6 | P0(int *x, int *y, spinlock_t *a, spinlock_t *b) 7 | { 8 | spin_lock(a); 9 | WRITE_ONCE(*y,1); 10 | spin_unlock(a); 11 | spin_lock(b); 12 | WRITE_ONCE(*x,1); 13 | spin_unlock(b); 14 | } 15 | 16 | P1(int *x, int *y) 17 | { 18 | int r0 = READ_ONCE(*x); 19 | smp_mb(); 20 | int r1 = READ_ONCE(*y); 21 | } 22 | 23 | exists (1:r0=1 /\ 1:r1=0) 24 | -------------------------------------------------------------------------------- /manual/kernel/C-MP+o-mb-o+l-o-ul-l-o-ul.litmus: -------------------------------------------------------------------------------- 1 | C C-MP+o-mb-o+l-o-ul-l-o-ul 2 | 3 | {} 4 | 5 | 6 | P0(int *x, int *y) 7 | { 8 | WRITE_ONCE(*x,1); 9 | smp_mb(); 10 | WRITE_ONCE(*y,1); 11 | } 12 | 13 | P1(int *x, int *y, spinlock_t *a, spinlock_t *b) 14 | { 15 | spin_lock(a); 16 | int r0 = READ_ONCE(*y); 17 | spin_unlock(a); 18 | spin_lock(b); 19 | int r1 = READ_ONCE(*x); 20 | spin_unlock(b); 21 | } 22 | 23 | exists (1:r0=1 /\ 1:r1=0) 24 | -------------------------------------------------------------------------------- /manual/kernel/C-MP-o-A-o+o-A-o.litmus: -------------------------------------------------------------------------------- 1 | C C-MP-o-A-o+o-A-o 2 | 3 | {} 4 | 5 | P0(int *x, int *y, int *s) 6 | { 7 | int r0; 8 | 9 | WRITE_ONCE(*x, 1); 10 | smp_mb__before_atomic(); 11 | atomic_inc(s); 12 | WRITE_ONCE(*y, 1); 13 | } 14 | 15 | P1(int *x, int *y, int *s) 16 | { 17 | int r0; 18 | int r1; 19 | 20 | r0 = READ_ONCE(*y); 21 | atomic_inc(s); 22 | smp_mb__after_atomic(); 23 | r1 = READ_ONCE(*x); 24 | } 25 | 26 | exists (1:r0=1 /\ 1:r1=0) 27 | -------------------------------------------------------------------------------- /manual/kernel/C-MPrelseq+o-r+rmwinc+a-o.litmus: -------------------------------------------------------------------------------- 1 | C C-MPrelseq+o-r+rmwinc+a-o 2 | 3 | { 4 | } 5 | 6 | P0(int* x0, int* x1) { 7 | 8 | WRITE_ONCE(*x0, 2); 9 | smp_store_release(x1, 2); 10 | 11 | } 12 | 13 | P1(int* x1) { 14 | atomic_inc(x1); 15 | } 16 | 17 | P2(int* x0, int* x1) { 18 | int r2; 19 | int r3 = 0; 20 | 21 | r2 = smp_load_acquire(x1); 22 | r3 = READ_ONCE(*x0); 23 | 24 | } 25 | 26 | exists (~2:r2=0 /\ ~2:r2=1 /\ 2:r3=0) 27 | -------------------------------------------------------------------------------- /manual/kernel/C-OlivierGiroux-cppR.litmus: -------------------------------------------------------------------------------- 1 | C C-OlivierGiroux-cppR.litmus 2 | (* 3 | * Result: Sometimes 4 | *) 5 | 6 | { 7 | } 8 | 9 | P0(int *x, int *y) 10 | { 11 | int r1; 12 | r1 = READ_ONCE(*y); 13 | } 14 | 15 | P1(int *x, int *y) 16 | { 17 | WRITE_ONCE(*x, 1); 18 | smp_store_release(y, 1); 19 | } 20 | 21 | P2(int *x, int *y) 22 | { 23 | int r2; 24 | WRITE_ONCE(*y, 2); 25 | smp_mb(); 26 | r2 = READ_ONCE(*x); 27 | } 28 | 29 | exists 30 | (0:r1=1 /\ 2:r2=0 /\ y=2) 31 | -------------------------------------------------------------------------------- /manual/kernel/C-PPO000-019.litmus: -------------------------------------------------------------------------------- 1 | C C-PPO000-019 2 | 3 | (* 4 | * Result: Never 5 | *) 6 | 7 | { 8 | y=a; 9 | } 10 | 11 | P0(int *x, int *y) 12 | { 13 | WRITE_ONCE(*x, 1); 14 | smp_store_release(y, x); 15 | } 16 | 17 | 18 | P1(int *x, int *y, int *z) 19 | { 20 | int r1 = READ_ONCE(*y); 21 | WRITE_ONCE(*z, r1); 22 | int r2 = READ_ONCE(*z); 23 | int r3 = READ_ONCE(*r2); 24 | } 25 | 26 | exists (1:r1=x /\ 1:r2=x /\ 1:r3=0) 27 | -------------------------------------------------------------------------------- /manual/kernel/C-PPO000-019rcu.litmus: -------------------------------------------------------------------------------- 1 | C C-PPO000-019rcu 2 | 3 | (* 4 | * Result: Never 5 | *) 6 | 7 | { 8 | y=a; 9 | } 10 | 11 | P0(int *x, int *y) 12 | { 13 | WRITE_ONCE(*x, 1); 14 | smp_store_release(y, x); 15 | } 16 | 17 | 18 | P1(int *x, int *y, int *z) 19 | { 20 | r1 = rcu_dereference(*y); 21 | WRITE_ONCE(*z, r1); 22 | r2 = READ_ONCE(*z); 23 | r3 = READ_ONCE(*r2); 24 | } 25 | 26 | exists (1:r1=x /\ 1:r2=x /\ 1:r3=0) 27 | -------------------------------------------------------------------------------- /manual/kernel/C-PPOCA.litmus: -------------------------------------------------------------------------------- 1 | C C-PPOCA 2 | 3 | (* 4 | * Result: Sometimes 5 | *) 6 | 7 | { 8 | } 9 | 10 | P0(int *x, int *y) 11 | { 12 | WRITE_ONCE(*x, 1); 13 | smp_store_release(y, 1); 14 | } 15 | 16 | 17 | P1(int *x, int *y, int *z) 18 | { 19 | r1 = READ_ONCE(*y); 20 | if (r1) { 21 | WRITE_ONCE(*z, x); 22 | r2 = READ_ONCE(*z); 23 | r3 = READ_ONCE(*r2); 24 | } 25 | } 26 | 27 | exists (1:r1=1 /\ 1:r2=x /\ 1:r3=0) 28 | -------------------------------------------------------------------------------- /manual/kernel/C-PaulEMcKenney-MP+o-r+a-o.litmus: -------------------------------------------------------------------------------- 1 | C C-PaulEMcKenney-MP+o-r+a-o.litmus 2 | 3 | (* 4 | * Result: Never 5 | * This is after all simple release-acquire MP. 6 | *) 7 | 8 | { 9 | int x; 10 | int *p=&x; 11 | int * 1:r1; 12 | } 13 | 14 | P0(int **p, int *y) 15 | { 16 | WRITE_ONCE(*y, 1); 17 | smp_store_release(p, (void *)0); 18 | } 19 | 20 | P1(int **p, int *y) 21 | { 22 | int *r1; 23 | int r2; 24 | r1 = smp_load_acquire(p); 25 | r2 = READ_ONCE(*y); 26 | } 27 | 28 | exists 29 | (1:r1=0 /\ 1:r2=0) 30 | -------------------------------------------------------------------------------- /manual/kernel/C-PaulEMcKenney-MP+o-sync-o+o-o.litmus: -------------------------------------------------------------------------------- 1 | C C-PaulEMcKenney-MP+o-sync-o+o-o.litmus 2 | 3 | (* 4 | * Result: Sometimes 5 | * After all, P1 is unordered. 6 | *) 7 | 8 | { 9 | } 10 | 11 | P0(int *x, int *y) 12 | { 13 | WRITE_ONCE(*x, 1); 14 | synchronize_rcu(); 15 | WRITE_ONCE(*y, 1); 16 | } 17 | 18 | P1(int *x, int *y) 19 | { 20 | int r1; int r2; 21 | r1 = READ_ONCE(*y); 22 | r2 = READ_ONCE(*x); 23 | } 24 | 25 | exists 26 | (1:r1=1 /\ 1:r2=0) 27 | -------------------------------------------------------------------------------- /manual/kernel/C-PaulEMcKenney-S+o-sync-o+o-c-o.litmus: -------------------------------------------------------------------------------- 1 | C C-PaulEMcKenney-S+o-sync-o+o-c-o.litmus 2 | 3 | (* 4 | * Result: Never 5 | * This is based on control dependency. 6 | *) 7 | 8 | { 9 | } 10 | 11 | P0(int *x, int *y) 12 | { 13 | WRITE_ONCE(*x, 1); 14 | synchronize_rcu(); 15 | WRITE_ONCE(*y, 1); 16 | } 17 | 18 | P1(int *x, int *y) 19 | { 20 | int r1; 21 | r1 = READ_ONCE(*y); 22 | if (r1) 23 | WRITE_ONCE(*x, 2); 24 | } 25 | 26 | exists 27 | (1:r1=1 /\ x=1) 28 | -------------------------------------------------------------------------------- /manual/kernel/C-PaulEMcKenney-S+o-sync-o+o-o.litmus: -------------------------------------------------------------------------------- 1 | C C-PaulEMcKenney-S+o-sync-o+o-o.litmus 2 | 3 | (* 4 | * Result: Sometimes 5 | * Based on no ordering in P1(). 6 | *) 7 | 8 | { 9 | } 10 | 11 | P0(int *x, int *y) 12 | { 13 | WRITE_ONCE(*x, 1); 14 | synchronize_rcu(); 15 | WRITE_ONCE(*y, 1); 16 | } 17 | 18 | P1(int *x, int *y) 19 | { 20 | int r1; 21 | r1 = READ_ONCE(*y); 22 | WRITE_ONCE(*x, 2); 23 | } 24 | 25 | exists 26 | (1:r1=1 /\ x=1) 27 | -------------------------------------------------------------------------------- /manual/kernel/C-PeterZijlstra+o-r+o-r+a-o-SB.litmus: -------------------------------------------------------------------------------- 1 | C C-PeterZijlstra+o-r+o-r+a-o-SB 2 | 3 | { 4 | } 5 | 6 | P0(int *x, int *y) 7 | { 8 | WRITE_ONCE(*x, 1); 9 | smp_store_release(y, 1); 10 | } 11 | 12 | P1(int *x, int *y) 13 | { 14 | WRITE_ONCE(*x, 2); 15 | smp_store_release(y, 2); 16 | } 17 | 18 | P2(int *x, int *y) 19 | { 20 | int r2; int r1; 21 | r1 = smp_load_acquire(y); 22 | r2 = READ_ONCE(*x); 23 | } 24 | 25 | exists 26 | (((x=1 /\ y=2) \/ (x=2 /\ y=1)) /\ (2:r1=1 \/ 2:r1=2) /\ 2:r2=0) 27 | -------------------------------------------------------------------------------- /manual/kernel/C-PeterZijlstra+o-r+o-r+a-o-SB1.litmus: -------------------------------------------------------------------------------- 1 | C C-PeterZijlstra+o-r+o-r+a-o-SB1 2 | 3 | { 4 | } 5 | 6 | P0(int *x, int *y) 7 | { 8 | WRITE_ONCE(*x, 1); 9 | smp_store_release(y, 1); 10 | } 11 | 12 | P1(int *x, int *y) 13 | { 14 | WRITE_ONCE(*x, 2); 15 | smp_store_release(y, 2); 16 | } 17 | 18 | P2(int *x, int *y) 19 | { 20 | int r1; int r2; 21 | r1 = smp_load_acquire(y); 22 | r2 = READ_ONCE(*x); 23 | } 24 | 25 | exists 26 | ((2:r1=1 \/ 2:r1=2) /\ 2:r2=0) 27 | -------------------------------------------------------------------------------- /manual/kernel/C-RW-G+RW-C.litmus: -------------------------------------------------------------------------------- 1 | C C-RW-G+RW-C.litmus 2 | 3 | { 4 | } 5 | 6 | P0(int *x0, int *x1) 7 | { 8 | int r1; 9 | r1 = READ_ONCE(*x0); 10 | synchronize_rcu(); 11 | WRITE_ONCE(*x1, 1); 12 | } 13 | 14 | P1(int *x0, int *x1) 15 | { 16 | int r1; 17 | r1 = READ_ONCE(*x1); 18 | if (r1 != 0) { 19 | WRITE_ONCE(*x1, 1); 20 | } 21 | } 22 | 23 | exists 24 | (0:r1=1 /\ 1:r1=1) 25 | -------------------------------------------------------------------------------- /manual/kernel/C-RW-R+RR-G+WR-B.litmus: -------------------------------------------------------------------------------- 1 | C C-RW-R+RR-G+WR-B.litmus 2 | 3 | { 4 | } 5 | 6 | P0(int *x0, int *x1) 7 | { 8 | WRITE_ONCE(*x0, 1); 9 | synchronize_rcu(); 10 | WRITE_ONCE(*x1, 1); 11 | } 12 | 13 | P1(int *x1, int *x2) 14 | { 15 | int r1; int r2; 16 | r1 = READ_ONCE(*x1); 17 | synchronize_rcu(); 18 | r2 = READ_ONCE(*x2); 19 | } 20 | 21 | P2(int *x2, int *x0) 22 | { 23 | int r3; 24 | WRITE_ONCE(*x2, 1); 25 | smp_mb(); 26 | r3 = READ_ONCE(*x0); 27 | } 28 | 29 | exists 30 | (1:r1=1 /\ 1:r2=0 /\ 2:r3=0) 31 | -------------------------------------------------------------------------------- /manual/kernel/C-RW-s+RW-D.litmus: -------------------------------------------------------------------------------- 1 | C C-RW-s+RW-D.litmus 2 | 3 | { 4 | int z1; int *x1 = &z1; 5 | } 6 | 7 | P0(int *x0, int **x1) 8 | { 9 | int r1 = READ_ONCE(*x0); 10 | rcu_assign_pointer(*x1, x0); 11 | } 12 | 13 | P1(int **x1) 14 | { 15 | int *r1 = rcu_dereference(*x1); 16 | WRITE_ONCE(*r1, 1); 17 | } 18 | 19 | exists 20 | (0:r1=1 /\ 1:r1=x0) 21 | -------------------------------------------------------------------------------- /manual/kernel/C-RW-sD+RW-sD.litmus: -------------------------------------------------------------------------------- 1 | C C-RW-s+RW-sD.litmus 2 | 3 | { 4 | x1=y0; 5 | x0=y1; 6 | } 7 | 8 | P0(int **x0, int **x1, int *y1) 9 | { 10 | int r1; 11 | int r3 = x0; 12 | int r4 = y1; 13 | 14 | r1 = rcu_dereference(*x0); 15 | rcu_assign_pointer(*r1, y1); 16 | } 17 | 18 | P1(int **x0, int **x1, int *y0) 19 | { 20 | int r1; 21 | int r3 = x0; 22 | int r4 = y0; 23 | 24 | r1 = rcu_dereference(*x1); 25 | rcu_assign_pointer(*r1, r3); 26 | } 27 | 28 | exists 29 | (0:r1=1 /\ 1:r1=x0) 30 | -------------------------------------------------------------------------------- /manual/kernel/C-SB+l-o-ul-l-o-ul+o-mb-o.litmus: -------------------------------------------------------------------------------- 1 | C C-SB+l-o-ul-l-o-ul+o-mb-o 2 | 3 | {} 4 | 5 | 6 | P0(int *x, int *y, spinlock_t *a, spinlock_t *b) 7 | { 8 | spin_lock(a); 9 | WRITE_ONCE(*y,1); 10 | spin_unlock(a); 11 | spin_lock(b); 12 | int r0 = READ_ONCE(*x); 13 | spin_unlock(b); 14 | } 15 | 16 | P1(int *x, int *y) 17 | { 18 | WRITE_ONCE(*x,1); 19 | smp_mb(); 20 | int r0 = READ_ONCE(*y); 21 | } 22 | 23 | exists (0:r0=0 /\ 1:r0=0) 24 | -------------------------------------------------------------------------------- /manual/kernel/C-W+MP+o+o-wmb-o+o-rmb-o.litmus: -------------------------------------------------------------------------------- 1 | C C-W+MP+o+o-wmb-o+o-rmb-o 2 | { 3 | } 4 | 5 | P0(int *x0) 6 | { 7 | WRITE_ONCE(*x0, 1); 8 | } 9 | 10 | P1(int *x0, int *x1) 11 | { 12 | WRITE_ONCE(*x0, 2); 13 | smp_wmb(); 14 | WRITE_ONCE(*x1, 1); 15 | } 16 | 17 | 18 | P2(int *x0, int *x1) 19 | { 20 | int r1; 21 | int r2; 22 | 23 | r1 = READ_ONCE(*x1); 24 | smp_rmb(); 25 | r2 = READ_ONCE(*x0); 26 | } 27 | 28 | exists (x0=2 /\ 2:r1=1 /\ ~2:r2=2) 29 | -------------------------------------------------------------------------------- /manual/kernel/C-W+WRC+l-o-o-ul+l-o-o-ul+o-mb-o.litmus: -------------------------------------------------------------------------------- 1 | C C-W+WRC+l-o-o-ul+l-o-o-ul+o-mb-o 2 | 3 | {} 4 | 5 | P0(int *x, int *y, int *z, spinlock_t *a) 6 | { 7 | spin_lock(a); 8 | WRITE_ONCE(*x,1); 9 | WRITE_ONCE(*y,1); 10 | spin_unlock(a); 11 | } 12 | 13 | P1(int *x, int *y, int *z, spinlock_t *a) 14 | { 15 | spin_lock(a); 16 | int r0 = READ_ONCE(*y); 17 | int r1 = READ_ONCE(*z); 18 | spin_unlock(a); 19 | } 20 | 21 | P2(int *x, int *y, int *z) 22 | { 23 | WRITE_ONCE(*z,1); 24 | smp_mb(); 25 | int r0 = READ_ONCE(*x); 26 | } 27 | 28 | exists (1:r0=1 /\ 1:r1=0 /\ 2:r0=0) 29 | -------------------------------------------------------------------------------- /manual/kernel/C-WillDeacon-AcqRelStore.litmus: -------------------------------------------------------------------------------- 1 | C C-WillDeacon-AcqRelStore.litmus 2 | 3 | { 4 | } 5 | 6 | P0(int *x, int *y) 7 | { 8 | WRITE_ONCE(*x, 1); 9 | smp_wmb(); 10 | smp_store_release(y, 1); 11 | } 12 | 13 | P1(int *y) 14 | { 15 | WRITE_ONCE(*y, 2); 16 | } 17 | 18 | P2(int *x, int *y) 19 | { 20 | int r1; int r2; 21 | r1 = smp_load_acquire(y); 22 | r2 = READ_ONCE(*x); 23 | } 24 | 25 | exists 26 | (y=2 /\ 2:r1=2 /\ 2:r2=0) 27 | -------------------------------------------------------------------------------- /manual/kernel/C-WillDeacon-MP+o-r+ai-rmb-o.litmus: -------------------------------------------------------------------------------- 1 | C C-WillDeacon-MP+o-r+ai-rmb-o.litmus 2 | 3 | (* 4 | * Result: Sometimes 5 | * 6 | * This used to be Never, but became Sometimes with the Noreturn 7 | * changes to linux-kernel.cat's rmb relation. 8 | *) 9 | 10 | { 11 | } 12 | 13 | P0(int *x, atomic_t *y) 14 | { 15 | int r0; 16 | WRITE_ONCE(*x, 1); 17 | r0 = atomic_xchg_release(y, 5); 18 | } 19 | 20 | P1(int *x, atomic_t *y) 21 | { 22 | int r1 ; 23 | atomic_inc(y); 24 | smp_rmb(); 25 | r1 = READ_ONCE(*x); 26 | } 27 | 28 | exists 29 | (0:r0=0 /\ 1:r1=0) 30 | -------------------------------------------------------------------------------- /manual/kernel/C-dynticks-from-idle.litmus: -------------------------------------------------------------------------------- 1 | C dynticks-from-idle 2 | 3 | { 4 | DYNTICKS=0; (* Initially idle. *) 5 | } 6 | 7 | 8 | P0(int *X, int *DYNTICKS) 9 | { 10 | int dynticks; 11 | int x; 12 | 13 | // Idle. 14 | dynticks = READ_ONCE(*DYNTICKS); 15 | smp_store_release(DYNTICKS, dynticks + 1); 16 | smp_mb(); 17 | // Now non-idle 18 | x = READ_ONCE(*X); 19 | } 20 | 21 | P1(int *X, int *DYNTICKS) 22 | { 23 | int dynticks; 24 | 25 | WRITE_ONCE(*X, 1); 26 | smp_mb(); 27 | dynticks = smp_load_acquire(DYNTICKS); 28 | } 29 | 30 | exists (1:dynticks=0 /\ 0:x=0) 31 | -------------------------------------------------------------------------------- /manual/kernel/C-dynticks-into-idle.litmus: -------------------------------------------------------------------------------- 1 | C dynticks-into-idle 2 | 3 | { 4 | DYNTICKS=1; (* Initially non-idle. *) 5 | } 6 | 7 | 8 | P0(int *X, int *DYNTICKS) 9 | { 10 | int dynticks; 11 | 12 | // Non-idle. 13 | WRITE_ONCE(*X, 1); 14 | dynticks = READ_ONCE(*DYNTICKS); 15 | smp_store_release(DYNTICKS, dynticks + 1); 16 | smp_mb(); 17 | // Now idle. 18 | } 19 | 20 | P1(int *X, int *DYNTICKS) 21 | { 22 | int x; 23 | int dynticks; 24 | 25 | smp_mb(); 26 | dynticks = smp_load_acquire(DYNTICKS); 27 | x = READ_ONCE(*X); 28 | } 29 | 30 | exists (1:dynticks=2 /\ 1:x=0) 31 | -------------------------------------------------------------------------------- /manual/kernel/C-piggin-SB+samevar.litmus: -------------------------------------------------------------------------------- 1 | C C-piggin-SB+samevar.litmus 2 | 3 | { 4 | x=0; 5 | } 6 | 7 | P0(int *x) 8 | { 9 | int r1; 10 | WRITE_ONCE(*x, 1); 11 | r1 = READ_ONCE(*x); 12 | } 13 | 14 | P1(int *x) 15 | { 16 | int r1; 17 | WRITE_ONCE(*x, 2); 18 | r1 = READ_ONCE(*x); 19 | } 20 | 21 | exists 22 | (0:r1=0 /\ 1:r1=0) 23 | -------------------------------------------------------------------------------- /manual/kernel/C-srcu-mb-1.litmus: -------------------------------------------------------------------------------- 1 | C C-srcu-mb-1 2 | 3 | (* 4 | * Result: Sometimes 5 | * 6 | * By itself, srcu_read_unlock() provides no ordering. 7 | *) 8 | 9 | {} 10 | 11 | P0(int *x, int *y, struct srcu_struct *s) 12 | { 13 | int r1; 14 | int r2; 15 | 16 | r1 = srcu_read_lock(s); 17 | WRITE_ONCE(*x, 1); 18 | srcu_read_unlock(s, r1); 19 | r2 = READ_ONCE(*y); 20 | } 21 | 22 | P1(int *x, int *y, struct srcu_struct *s) 23 | { 24 | int r1; 25 | 26 | WRITE_ONCE(*y, 1); 27 | smp_mb(); 28 | r1 = READ_ONCE(*x); 29 | } 30 | 31 | exists (0:r2=0 /\ 1:r1=0) 32 | -------------------------------------------------------------------------------- /manual/kernel/C-srcu-mb-3.litmus: -------------------------------------------------------------------------------- 1 | C C-srcu-mb-2 2 | 3 | (* 4 | * Result: Sometimes 5 | * 6 | * By itself, smp_mb__after_srcu_read_unlock() provides no ordering. 7 | *) 8 | 9 | {} 10 | 11 | P0(int *x, int *y, struct srcu_struct *s) 12 | { 13 | int r2; 14 | 15 | WRITE_ONCE(*x, 1); 16 | smp_mb__after_srcu_read_unlock(); 17 | r2 = READ_ONCE(*y); 18 | } 19 | 20 | P1(int *x, int *y, struct srcu_struct *s) 21 | { 22 | int r1; 23 | 24 | WRITE_ONCE(*y, 1); 25 | smp_mb(); 26 | r1 = READ_ONCE(*x); 27 | } 28 | 29 | exists (0:r2=0 /\ 1:r1=0) 30 | -------------------------------------------------------------------------------- /manual/kernel/C-srcu-nest-1.litmus: -------------------------------------------------------------------------------- 1 | C C-srcu-nest-1 2 | 3 | (* 4 | * Result: Never 5 | *) 6 | 7 | {} 8 | 9 | P0(int *x, int *y, struct srcu_struct *s) 10 | { 11 | int r1; 12 | int r2; 13 | int r3; 14 | 15 | r3 = srcu_read_lock(s); 16 | r1 = READ_ONCE(*x); 17 | srcu_read_unlock(s, r3); 18 | r3 = srcu_read_lock(s); 19 | r2 = READ_ONCE(*y); 20 | srcu_read_unlock(s, r3); 21 | } 22 | 23 | P1(int *x, int *y, struct srcu_struct *s) 24 | { 25 | WRITE_ONCE(*y, 1); 26 | synchronize_srcu(s); 27 | WRITE_ONCE(*x, 1); 28 | } 29 | 30 | locations [0:r1] 31 | exists (0:r1=1 /\ 0:r2=0) 32 | -------------------------------------------------------------------------------- /manual/kernel/C-zx2c4-RCU.litmus: -------------------------------------------------------------------------------- 1 | C zx2c4-RCU 2 | 3 | { 4 | } 5 | 6 | P0(int *a, int *b) 7 | { 8 | WRITE_ONCE(*a, 1); 9 | synchronize_rcu(); 10 | r1 = READ_ONCE(*b); 11 | } 12 | 13 | P1(int *a, int *b) 14 | { 15 | rcu_read_lock(); 16 | r1 = READ_ONCE(*a); 17 | if (r1 == 0) { 18 | WRITE_ONCE(*b, 1); 19 | WRITE_ONCE(*b, 0); 20 | } 21 | rcu_read_unlock(); 22 | } 23 | 24 | locations [0:r1; 1:r1; a; b] 25 | exists (0:r1=1) 26 | -------------------------------------------------------------------------------- /manual/kernel/C-zx2c4-atomic.litmus: -------------------------------------------------------------------------------- 1 | C zx2c4-atomic 2 | 3 | { 4 | int a=1; 5 | } 6 | 7 | P0(int *a, int *b) 8 | { 9 | if (atomic_cmpxchg(a, 1, 0) == 1) { 10 | r1 = READ_ONCE(*b); 11 | } 12 | } 13 | 14 | P1(int *a, int *b) 15 | { 16 | r1 = READ_ONCE(*a); 17 | if (r1 > 0) { 18 | r2 = r1 + 1; 19 | r3 = atomic_cmpxchg(a, r1, r2); 20 | if (r3 == r1) { 21 | WRITE_ONCE(*b, 1); 22 | WRITE_ONCE(*b, 0); 23 | } 24 | } 25 | } 26 | 27 | locations [0:r1; 1:r1; 1:r2; 1:r3; a; b] 28 | exists (0:r1=1) 29 | -------------------------------------------------------------------------------- /manual/kernel/LB-release-acquire.litmus: -------------------------------------------------------------------------------- 1 | C LB-release-acquire 2 | 3 | {} 4 | 5 | P0(int *x, int *y, int *u) 6 | { 7 | int r0; 8 | int r1; 9 | 10 | r0 = READ_ONCE(*x); 11 | smp_store_release(u, 1); 12 | r1 = smp_load_acquire(u); 13 | WRITE_ONCE(*y, 1); 14 | } 15 | 16 | P1(int *x, int *y, int *v) 17 | { 18 | int r0; 19 | int r1; 20 | 21 | r0 = READ_ONCE(*y); 22 | smp_store_release(v, 1); 23 | r1 = smp_load_acquire(v); 24 | WRITE_ONCE(*x, 1); 25 | } 26 | 27 | exists (0:r0=1 /\ 1:r0=1) 28 | -------------------------------------------------------------------------------- /manual/kernel/LB-unlock-lock.litmus: -------------------------------------------------------------------------------- 1 | C LB-unlock-lock 2 | 3 | {} 4 | 5 | P0(int *x, int *y, spinlock_t *u) 6 | { 7 | int r0; 8 | 9 | spin_lock(u); 10 | r0 = READ_ONCE(*x); 11 | spin_unlock(u); 12 | spin_lock(u); 13 | WRITE_ONCE(*y, 1); 14 | spin_unlock(u); 15 | } 16 | 17 | P1(int *x, int *y, spinlock_t *v) 18 | { 19 | int r0; 20 | 21 | spin_lock(v); 22 | r0 = READ_ONCE(*y); 23 | spin_unlock(v); 24 | spin_lock(v); 25 | WRITE_ONCE(*x, 1); 26 | spin_unlock(v); 27 | } 28 | 29 | exists (0:r0=1 /\ 1:r0=1) 30 | -------------------------------------------------------------------------------- /manual/kernel/MP-o-sync-o+rl-o-ctl-o-rul.litmus: -------------------------------------------------------------------------------- 1 | C MP-o-sync-o+rl-o-ctl-o-rul 2 | 3 | {} 4 | 5 | P0(int *a, int *b) 6 | { 7 | WRITE_ONCE(*a, 1); 8 | synchronize_rcu(); 9 | WRITE_ONCE(*b, 2); 10 | } 11 | 12 | P1(int *a, int *b) 13 | { 14 | int r0; 15 | int r1; 16 | 17 | rcu_read_lock(); 18 | r0 = READ_ONCE(*b); 19 | if (r0) 20 | r1 = READ_ONCE(*a); 21 | rcu_read_unlock(); 22 | } 23 | 24 | exists (1:r0=1 /\ 1:r1=0) 25 | -------------------------------------------------------------------------------- /manual/kernel/MP-release-acquire.litmus: -------------------------------------------------------------------------------- 1 | C MP-release-acquire 2 | 3 | {} 4 | 5 | P0(int *x, int *y, int *s) 6 | { 7 | int r0; 8 | 9 | WRITE_ONCE(*x, 1); 10 | smp_store_release(s, 1); 11 | r0 = smp_load_acquire(s); 12 | WRITE_ONCE(*y, 1); 13 | } 14 | 15 | P1(int *x, int *y) 16 | { 17 | int r0; 18 | int r1; 19 | 20 | r0 = READ_ONCE(*y); 21 | smp_rmb(); 22 | r1 = READ_ONCE(*x); 23 | } 24 | 25 | exists (1:r0=1 /\ 1:r1=0) 26 | -------------------------------------------------------------------------------- /manual/kernel/MP-unlock-lock.litmus: -------------------------------------------------------------------------------- 1 | C MP-unlock-lock 2 | 3 | {} 4 | 5 | P0(int *x, int *y, spinlock_t *s) 6 | { 7 | spin_lock(s); 8 | WRITE_ONCE(*x, 1); 9 | spin_unlock(s); 10 | spin_lock(s); 11 | WRITE_ONCE(*y, 1); 12 | spin_unlock(s); 13 | } 14 | 15 | P1(int *x, int *y) 16 | { 17 | int r0; 18 | int r1; 19 | 20 | r0 = READ_ONCE(*y); 21 | smp_rmb(); 22 | r1 = READ_ONCE(*x); 23 | } 24 | 25 | exists (1:r0=1 /\ 1:r1=0) 26 | -------------------------------------------------------------------------------- /manual/kernel/README: -------------------------------------------------------------------------------- 1 | Harvested from discussions within the Linux-kernel community. 2 | -------------------------------------------------------------------------------- /manual/kernel/SB-release-acquire.litmus: -------------------------------------------------------------------------------- 1 | C SB-release-acquire 2 | 3 | {} 4 | 5 | P0(int *x, int *y, int *u) 6 | { 7 | int r0; 8 | int r1; 9 | 10 | WRITE_ONCE(*x, 1); 11 | smp_store_release(u, 1); 12 | r0 = smp_load_acquire(u); 13 | r1 = READ_ONCE(*y); 14 | } 15 | 16 | P1(int *x, int *y, int *v) 17 | { 18 | int r0; 19 | int r1; 20 | 21 | WRITE_ONCE(*y, 1); 22 | smp_store_release(v, 1); 23 | r0 = smp_load_acquire(v); 24 | r1 = READ_ONCE(*x); 25 | } 26 | 27 | exists (0:r1=0 /\ 1:r1=0) 28 | -------------------------------------------------------------------------------- /manual/kernel/SB-unlock-lock.litmus: -------------------------------------------------------------------------------- 1 | C SB-unlock-lock 2 | 3 | {} 4 | 5 | P0(int *x, int *y, spinlock_t *u) 6 | { 7 | int r0; 8 | 9 | spin_lock(u); 10 | WRITE_ONCE(*x, 1); 11 | spin_unlock(u); 12 | spin_lock(u); 13 | r0 = READ_ONCE(*y); 14 | spin_unlock(u); 15 | } 16 | 17 | P1(int *x, int *y, spinlock_t *v) 18 | { 19 | int r0; 20 | 21 | spin_lock(v); 22 | WRITE_ONCE(*y, 1); 23 | spin_unlock(v); 24 | spin_lock(v); 25 | r0 = READ_ONCE(*x); 26 | spin_unlock(v); 27 | } 28 | 29 | exists (0:r0=0 /\ 1:r0=0) 30 | -------------------------------------------------------------------------------- /manual/kernel/WRC-release-acquire.litmus: -------------------------------------------------------------------------------- 1 | C WRC-release-acquire 2 | 3 | {} 4 | 5 | P0(int *x) 6 | { 7 | WRITE_ONCE(*x, 1); 8 | } 9 | 10 | P1(int *x, int *y, int *s) 11 | { 12 | int r0; 13 | int r1; 14 | 15 | r0 = READ_ONCE(*x); 16 | smp_store_release(s, 1); 17 | r1 = smp_load_acquire(s); 18 | WRITE_ONCE(*y, 1); 19 | } 20 | 21 | P2(int *x, int *y) 22 | { 23 | int r0; 24 | int r1; 25 | 26 | r0 = READ_ONCE(*y); 27 | smp_rmb(); 28 | r1 = READ_ONCE(*x); 29 | } 30 | 31 | exists (1:r0=1 /\ 2:r0=1 /\ 2:r1=0) 32 | -------------------------------------------------------------------------------- /manual/kernel/WRC-unlock-lock.litmus: -------------------------------------------------------------------------------- 1 | C WRC-unlock-lock 2 | 3 | {} 4 | 5 | P0(int *x) 6 | { 7 | WRITE_ONCE(*x, 1); 8 | } 9 | 10 | P1(int *x, int *y, spinlock_t *s) 11 | { 12 | int r0; 13 | 14 | spin_lock(s); 15 | r0 = READ_ONCE(*x); 16 | spin_unlock(s); 17 | spin_lock(s); 18 | WRITE_ONCE(*y, 1); 19 | spin_unlock(s); 20 | } 21 | 22 | P2(int *x, int *y) 23 | { 24 | int r0; 25 | int r1; 26 | 27 | r0 = READ_ONCE(*y); 28 | smp_rmb(); 29 | r1 = READ_ONCE(*x); 30 | } 31 | 32 | exists (1:r0=1 /\ 2:r0=1 /\ 2:r1=0) 33 | -------------------------------------------------------------------------------- /manual/kernel/after-unlock-lock-same-cpu.litmus: -------------------------------------------------------------------------------- 1 | C after-unlock-lock-same-cpu 2 | 3 | (* 4 | * Result: Never 5 | *) 6 | 7 | {} 8 | 9 | P0(int *x, int *y, spinlock_t *s1, spinlock_t *s2) 10 | { 11 | int r0; 12 | 13 | spin_lock(s1); 14 | WRITE_ONCE(*x, 1); 15 | spin_unlock(s1); 16 | spin_lock(s2); 17 | smp_mb__after_unlock_lock(); 18 | r0 = READ_ONCE(*y); 19 | spin_unlock(s2); 20 | } 21 | 22 | P1(int *x, int *y) 23 | { 24 | int r0; 25 | 26 | WRITE_ONCE(*y, 1); 27 | smp_mb(); 28 | r0 = READ_ONCE(*x); 29 | } 30 | 31 | exists (0:r0=0 /\ 1:r0=0) 32 | -------------------------------------------------------------------------------- /manual/locked/CoWW+sil-lock-sil-unlock-sil.litmus: -------------------------------------------------------------------------------- 1 | C CoWW+sil-lock-sil-unlock-sil.litmus 2 | 3 | (* 4 | * Result: Always 5 | * 6 | * This tests the memory model's implementation of spin_is_locked(). 7 | *) 8 | 9 | {} 10 | 11 | P0(spinlock_t *x) 12 | { 13 | int r0; 14 | int r1; 15 | int r2; 16 | 17 | r0 = spin_is_locked(x); 18 | spin_lock(x); 19 | r1 = spin_is_locked(x); 20 | spin_unlock(x); 21 | r2 = spin_is_locked(x); 22 | } 23 | 24 | exists (0:r0=0 /\ 0:r1=1 /\ 0:r2=0) 25 | -------------------------------------------------------------------------------- /manual/locked/README.txt: -------------------------------------------------------------------------------- 1 | Systematic locked tests, should be SC. 2 | 3 | -------------------------------------------------------------------------------- /manual/locked/SUW+or-ow+l-ow-or.litmus: -------------------------------------------------------------------------------- 1 | C SUW+or-ow+l-ow-or 2 | {} 3 | 4 | P0(int *x, int *y, int *my_lock) 5 | { 6 | int r0; int r1; 7 | r0 = READ_ONCE(*x); 8 | WRITE_ONCE(*y, 1); 9 | smp_mb(); 10 | r1 = READ_ONCE(*my_lock); 11 | } 12 | 13 | P1(int *x, int *y, int *my_lock) { 14 | int r0; int r1; 15 | r1 = xchg(my_lock, 1); 16 | WRITE_ONCE(*x, 1); 17 | r0 = READ_ONCE(*y); 18 | } 19 | 20 | exists (0:r0=1 /\ 0:r1=0 /\ 1:r0=0 /\ 1:r1=0) 21 | -------------------------------------------------------------------------------- /manual/locked/SUW+or-ow+la-ow-or.litmus: -------------------------------------------------------------------------------- 1 | C SUW+or-ow+la-ow-or 2 | {} 3 | 4 | P0(int *x, int *y, int *my_lock) 5 | { 6 | int r0; int r1; 7 | r0 = READ_ONCE(*x); 8 | WRITE_ONCE(*y, 1); 9 | smp_mb(); 10 | r1 = READ_ONCE(*my_lock); 11 | } 12 | 13 | P1(int *x, int *y, int *my_lock) { 14 | int r0; int r1; 15 | r1 = xchg_acquire(my_lock, 1); 16 | WRITE_ONCE(*x, 1); 17 | r0 = READ_ONCE(*y); 18 | } 19 | 20 | exists (0:r0=1 /\ 0:r1=0 /\ 1:r0=0 /\ 1:r1=0) 21 | -------------------------------------------------------------------------------- /manual/locked/rel-acq-unlock-lock/rel-acq-write-ordering-1.litmus: -------------------------------------------------------------------------------- 1 | C rel-acq-write-ordering-1 2 | 3 | {} 4 | 5 | P0(int *s, int *y) 6 | { 7 | smp_store_release(s, 1); 8 | r1 = smp_load_acquire(s); 9 | WRITE_ONCE(*y, 1); 10 | } 11 | 12 | P1(int *s, int *y) 13 | { 14 | r2 = READ_ONCE(*y); 15 | smp_rmb(); 16 | r3 = READ_ONCE(*s); 17 | } 18 | 19 | exists (1:r2=1 /\ 1:r3=0) 20 | -------------------------------------------------------------------------------- /manual/locked/rel-acq-unlock-lock/rel-acq-write-ordering-2.litmus: -------------------------------------------------------------------------------- 1 | C rel-acq-write-ordering-2 2 | 3 | {} 4 | 5 | P0(int *s, int *t, int *y) 6 | { 7 | smp_store_release(s, 1); 8 | r1 = smp_load_acquire(t); 9 | WRITE_ONCE(*y, 1); 10 | } 11 | 12 | P1(int *s, int *y) 13 | { 14 | r2 = READ_ONCE(*y); 15 | smp_rmb(); 16 | r3 = READ_ONCE(*s); 17 | } 18 | 19 | exists (1:r2=1 /\ 1:r3=0) 20 | -------------------------------------------------------------------------------- /manual/locked/rel-acq-unlock-lock/unlock-lock-write-ordering-1.litmus: -------------------------------------------------------------------------------- 1 | C unlock-lock-write-ordering-1 2 | 3 | {} 4 | 5 | P0(int *x, int *y, spinlock_t *s) 6 | { 7 | spin_lock(s); 8 | WRITE_ONCE(*x, 1); 9 | spin_unlock(s); 10 | spin_lock(s); 11 | WRITE_ONCE(*y, 1); 12 | spin_unlock(s); 13 | } 14 | 15 | P1(int *x, int *y) 16 | { 17 | r1 = READ_ONCE(*y); 18 | smp_rmb(); 19 | r2 = READ_ONCE(*x); 20 | } 21 | 22 | exists (1:r1=1 /\ 1:r2=0) 23 | -------------------------------------------------------------------------------- /manual/locked/rel-acq-unlock-lock/unlock-lock-write-ordering-2.litmus: -------------------------------------------------------------------------------- 1 | C unlock-lock-write-ordering-2 2 | 3 | {} 4 | 5 | P0(int *x, spinlock_t *s) 6 | { 7 | spin_lock(s); 8 | WRITE_ONCE(*x, 1); 9 | spin_unlock(s); 10 | } 11 | 12 | P1(int *x, int *y, spinlock_t *s) 13 | { 14 | spin_lock(s); 15 | r1 = READ_ONCE(*x); 16 | WRITE_ONCE(*y, 1); 17 | spin_unlock(s); 18 | } 19 | 20 | P2(int *x, int *y) 21 | { 22 | r2 = READ_ONCE(*y); 23 | smp_rmb(); 24 | r3 = READ_ONCE(*x); 25 | } 26 | 27 | exists (1:r1=1 /\ 2:r2=1 /\ 2:r3=0) 28 | -------------------------------------------------------------------------------- /manual/locked/self-deadlock.litmus: -------------------------------------------------------------------------------- 1 | C self-deadlock 2 | (* 3 | * Result: DEADLOCK 4 | * 5 | * Locking self-deadlock on process 0. 6 | *) 7 | { 8 | } 9 | 10 | P0(spinlock_t *sl) 11 | { 12 | spin_lock(sl); 13 | spin_lock(sl); 14 | spin_unlock(sl); 15 | spin_unlock(sl); 16 | } 17 | -------------------------------------------------------------------------------- /manual/lwn573436/.gitignore: -------------------------------------------------------------------------------- 1 | !*.litmus 2 | -------------------------------------------------------------------------------- /manual/lwn573436/C-2+2w+o-mb-o+o-mb-o.litmus: -------------------------------------------------------------------------------- 1 | C C-2+2w+o-mb-o+o-mb-o 2 | (* Forbid: full memory barriers everywhere. *) 3 | { 4 | x = 0; 5 | y = 0; 6 | } 7 | 8 | P0(int *x, int *y) 9 | { 10 | WRITE_ONCE(*x, 1); 11 | smp_mb(); 12 | WRITE_ONCE(*y, 2); 13 | } 14 | 15 | P1(int *y, int *x) 16 | { 17 | WRITE_ONCE(*y, 1); 18 | smp_mb(); 19 | WRITE_ONCE(*x, 2); 20 | } 21 | 22 | exists (x=1 /\ y=1) 23 | -------------------------------------------------------------------------------- /manual/lwn573436/C-2+2w+o-mb-o+o-wb-o.litmus: -------------------------------------------------------------------------------- 1 | C C-2+2w+o-mb-o+o-wb-o 2 | (* 3 | * Allow per Linus Torvalds email: 4 | * http://www.spinics.net/lists/arm-kernel/msg483690.html 5 | *) 6 | { 7 | x = 0; 8 | y = 0; 9 | } 10 | 11 | P0(int *x, int *y) 12 | { 13 | WRITE_ONCE(*x, 1); 14 | smp_mb(); 15 | WRITE_ONCE(*y, 2); 16 | } 17 | 18 | P1(int *y, int *x) 19 | { 20 | WRITE_ONCE(*y, 1); 21 | smp_wmb(); 22 | WRITE_ONCE(*x, 2); 23 | } 24 | 25 | exists (x=1 /\ y=1) 26 | -------------------------------------------------------------------------------- /manual/lwn573436/C-2+2w+o-wb-o+o-mb-o.litmus: -------------------------------------------------------------------------------- 1 | C C-2+2w+o-wb-o+o-mb-o 2 | (* 3 | * Allow per Linus Torvalds email: 4 | * http://www.spinics.net/lists/arm-kernel/msg483690.html 5 | *) 6 | { 7 | x = 0; 8 | y = 0; 9 | } 10 | 11 | P0(int *x, int *y) 12 | { 13 | WRITE_ONCE(*x, 1); 14 | smp_wmb(); 15 | WRITE_ONCE(*y, 2); 16 | } 17 | 18 | P1(int *y, int *x) 19 | { 20 | WRITE_ONCE(*y, 1); 21 | smp_mb(); 22 | WRITE_ONCE(*x, 2); 23 | } 24 | 25 | exists (x=1 /\ y=1) 26 | -------------------------------------------------------------------------------- /manual/lwn573436/C-2+2w+o-wb-o+o-wb-o.litmus: -------------------------------------------------------------------------------- 1 | C C-2+2w+o-wb-o+o-wb-o 2 | (* 3 | * Allow per Linus Torvalds email: 4 | * http://www.spinics.net/lists/arm-kernel/msg483690.html 5 | *) 6 | { 7 | x = 0; 8 | y = 0; 9 | } 10 | 11 | P0(int *x, int *y) 12 | { 13 | WRITE_ONCE(*x, 1); 14 | smp_wmb(); 15 | WRITE_ONCE(*y, 2); 16 | } 17 | 18 | P1(int *y, int *x) 19 | { 20 | WRITE_ONCE(*y, 1); 21 | smp_wmb(); 22 | WRITE_ONCE(*x, 2); 23 | } 24 | 25 | exists (x=1 /\ y=1) 26 | -------------------------------------------------------------------------------- /manual/lwn573436/C-iriw+o-mb-o+o-mb-o.litmus: -------------------------------------------------------------------------------- 1 | C C-IRIW+o-mb-o+o-mb-o 2 | (* Forbid, all full memory barriers. *) 3 | { 4 | x = 0; 5 | y = 0; 6 | } 7 | 8 | P0(int *x, int *y) 9 | { 10 | int r1; int r2; 11 | r1 = READ_ONCE(*x); 12 | smp_mb(); 13 | r2 = READ_ONCE(*y); 14 | } 15 | 16 | P1(int *y, int *x) 17 | { 18 | int r3; int r4; 19 | r3 = READ_ONCE(*y); 20 | smp_mb(); 21 | r4 = READ_ONCE(*x); 22 | } 23 | 24 | P2(int *x) 25 | { 26 | WRITE_ONCE(*x, 1); 27 | } 28 | 29 | P3(int *y) 30 | { 31 | WRITE_ONCE(*y, 1); 32 | } 33 | 34 | exists (0:r1 = 1 /\ 0:r2 = 0 /\ 1:r3 = 1 /\ 1:r4 = 0) 35 | -------------------------------------------------------------------------------- /manual/lwn573436/C-iriw+o-mb-o+o-rmb-o.litmus: -------------------------------------------------------------------------------- 1 | C C-IRIW+o-mb-o+o-rmb-o 2 | (* Allow, rmb is not transitive. *) 3 | { 4 | x = 0; 5 | y = 0; 6 | } 7 | 8 | P0(int *x, int *y) 9 | { 10 | int r1; int r2; 11 | r1 = READ_ONCE(*x); 12 | smp_mb(); 13 | r2 = READ_ONCE(*y); 14 | } 15 | 16 | P1(int *y, int *x) 17 | { 18 | int r3; int r4; 19 | r3 = READ_ONCE(*y); 20 | smp_rmb(); 21 | r4 = READ_ONCE(*x); 22 | } 23 | 24 | P2(int *x) 25 | { 26 | WRITE_ONCE(*x, 1); 27 | } 28 | 29 | P3(int *y) 30 | { 31 | WRITE_ONCE(*y, 1); 32 | } 33 | 34 | exists (0:r1 = 1 /\ 0:r2 = 0 /\ 1:r3 = 1 /\ 1:r4 = 0) 35 | -------------------------------------------------------------------------------- /manual/lwn573436/C-iriw+o-rmb-o+o-mb-o.litmus: -------------------------------------------------------------------------------- 1 | C C-IRIW+o-rmb-o+o-mb-o 2 | (* Allow, rmb is not transitive. *) 3 | { 4 | x = 0; 5 | y = 0; 6 | } 7 | 8 | P0(int *x, int *y) 9 | { 10 | int r1; int r2; 11 | r1 = READ_ONCE(*x); 12 | smp_rmb(); 13 | r2 = READ_ONCE(*y); 14 | } 15 | 16 | P1(int *y, int *x) 17 | { 18 | int r3; int r4; 19 | r3 = READ_ONCE(*y); 20 | smp_mb(); 21 | r4 = READ_ONCE(*x); 22 | } 23 | 24 | P2(int *x) 25 | { 26 | WRITE_ONCE(*x, 1); 27 | } 28 | 29 | P3(int *y) 30 | { 31 | WRITE_ONCE(*y, 1); 32 | } 33 | 34 | exists (0:r1 = 1 /\ 0:r2 = 0 /\ 1:r3 = 1 /\ 1:r4 = 0) 35 | -------------------------------------------------------------------------------- /manual/lwn573436/C-lb+o-mb-o+o-mb-o.litmus: -------------------------------------------------------------------------------- 1 | C C-LB+o-mb-o+o-mb-o 2 | (* Forbid, all full memory barriers. *) 3 | { 4 | x = 0; 5 | y = 0; 6 | } 7 | 8 | P0(int *x, int *y) 9 | { 10 | int r1 = READ_ONCE(*x); 11 | smp_mb(); 12 | WRITE_ONCE(*y, 1); 13 | } 14 | 15 | P1(int *y, int *x) 16 | { 17 | int r3 = READ_ONCE(*y); 18 | smp_mb(); 19 | WRITE_ONCE(*x, 1); 20 | } 21 | 22 | exists(0:r1=1 /\ 1:r3=1) 23 | -------------------------------------------------------------------------------- /manual/lwn573436/C-lb+o-mb-o+o-rmb-o.litmus: -------------------------------------------------------------------------------- 1 | C C-LB+o-mb-o+o-rmb-o 2 | (* Allow, rmb orders only reads. *) 3 | { 4 | x = 0; 5 | y = 0; 6 | } 7 | 8 | P0(int *x, int *y) 9 | { 10 | int r1 = READ_ONCE(*x); 11 | smp_mb(); 12 | WRITE_ONCE(*y, 1); 13 | } 14 | 15 | P1(int *y, int *x) 16 | { 17 | int r3 = READ_ONCE(*y); 18 | smp_rmb(); 19 | WRITE_ONCE(*x, 1); 20 | } 21 | 22 | exists(0:r1=1 /\ 1:r3=1) 23 | -------------------------------------------------------------------------------- /manual/lwn573436/C-mp+o-mb-o+o-mb-o.litmus: -------------------------------------------------------------------------------- 1 | C C-MP+o-mb-o+o-mb-o 2 | (* Forbid, all full memory barriers. *) 3 | { 4 | x = 0; 5 | y = 0; 6 | } 7 | 8 | P0(int *x, int *y) 9 | { 10 | WRITE_ONCE(*y, 1); 11 | smp_mb(); 12 | WRITE_ONCE(*x, 1); 13 | } 14 | 15 | P1(int *y, int *x) 16 | { 17 | int r1; int r2; 18 | r1 = READ_ONCE(*x); 19 | smp_mb(); 20 | r2 = READ_ONCE(*y); 21 | } 22 | 23 | exists (1:r1=1 /\ 1:r2=0) 24 | -------------------------------------------------------------------------------- /manual/lwn573436/C-mp+o-mb-o+o-mb-o2.litmus: -------------------------------------------------------------------------------- 1 | C C-MP+o-mb-o+o-mb-o2 2 | (* Forbid, all full memory barriers. *) 3 | { 4 | x = 0; 5 | y = 0; 6 | } 7 | 8 | P0(int *x, int *y) 9 | { 10 | WRITE_ONCE(*x, 1); 11 | smp_mb(); 12 | WRITE_ONCE(*y, 1); 13 | } 14 | 15 | P1(int *y, int *x) 16 | { 17 | int r1; int r2; 18 | r1 = READ_ONCE(*y); 19 | smp_mb(); 20 | r2 = READ_ONCE(*x); 21 | } 22 | 23 | exists (1:r1=1 /\ 1:r2=0) 24 | -------------------------------------------------------------------------------- /manual/lwn573436/C-mp+o-mb-o+o-rb-o.litmus: -------------------------------------------------------------------------------- 1 | C C-MP+o-mb-o+o-rb-o 2 | (* Forbid: rmb interacting via write-to-read with only one other thread. *) 3 | { 4 | x = 0; 5 | y = 0; 6 | } 7 | 8 | P0(int *x, int *y) 9 | { 10 | WRITE_ONCE(*y, 1); 11 | smp_mb(); 12 | WRITE_ONCE(*x, 1); 13 | } 14 | 15 | P1(int *y, int *x) 16 | { 17 | int r1; int r2; 18 | r1 = READ_ONCE(*x); 19 | smp_rmb(); 20 | r2 = READ_ONCE(*y); 21 | } 22 | 23 | exists (1:r1=1 /\ 1:r2=0) 24 | -------------------------------------------------------------------------------- /manual/lwn573436/C-mp+o-mb-o+o-rb-o2.litmus: -------------------------------------------------------------------------------- 1 | C C-MP+o-mb-o+o-rb-o2 2 | (* Forbid: rmb interacting via write-to-read with only one other thread. *) 3 | { 4 | x = 0; 5 | y = 0; 6 | } 7 | 8 | P0(int *x, int *y) 9 | { 10 | WRITE_ONCE(*x, 1); 11 | smp_mb(); 12 | WRITE_ONCE(*y, 1); 13 | } 14 | 15 | P1(int *y, int *x) 16 | { 17 | int r1; int r2; 18 | r1 = READ_ONCE(*y); 19 | smp_rmb(); 20 | r2 = READ_ONCE(*x); 21 | } 22 | 23 | exists (1:r1=1 /\ 1:r2=0) 24 | -------------------------------------------------------------------------------- /manual/lwn573436/C-mp+o-mb-o+o-wmb-o.litmus: -------------------------------------------------------------------------------- 1 | C C-MP+o-mb-o+o-wmb-o 2 | (* Allow, wmb orders only reads. *) 3 | { 4 | x = 0; 5 | y = 0; 6 | } 7 | 8 | P0(int *x, int *y) 9 | { 10 | WRITE_ONCE(*y, 1); 11 | smp_mb(); 12 | WRITE_ONCE(*x, 1); 13 | } 14 | 15 | P1(int *y, int *x) 16 | { 17 | int r1; int r2; 18 | r1 = READ_ONCE(*x); 19 | smp_wmb(); 20 | r2 = READ_ONCE(*y); 21 | } 22 | 23 | exists (1:r1=1 /\ 1:r2=0) 24 | -------------------------------------------------------------------------------- /manual/lwn573436/C-mp+o-rmb-o+o-mb-o.litmus: -------------------------------------------------------------------------------- 1 | C C-MP+o-rmb-o+o-mb-o 2 | (* Allow, rmb orders only reads. *) 3 | { 4 | x = 0; 5 | y = 0; 6 | } 7 | 8 | P0(int *x, int *y) 9 | { 10 | WRITE_ONCE(*y, 1); 11 | smp_rmb(); 12 | WRITE_ONCE(*x, 1); 13 | } 14 | 15 | P1(int *y, int *x) 16 | { 17 | int r1; int r2; 18 | r1 = READ_ONCE(*x); 19 | smp_mb(); 20 | r2 = READ_ONCE(*y); 21 | } 22 | 23 | exists (1:r1=1 /\ 1:r2=0) 24 | -------------------------------------------------------------------------------- /manual/lwn573436/C-mp+o-wb-o+o-mb-o.litmus: -------------------------------------------------------------------------------- 1 | C C-MP+o-wb-o+o-mb-o 2 | (* Forbid: wmb interacting via write-to-read with only one other thread. *) 3 | { 4 | x = 0; 5 | y = 0; 6 | } 7 | 8 | P0(int *x, int *y) 9 | { 10 | WRITE_ONCE(*y, 1); 11 | smp_wmb(); 12 | WRITE_ONCE(*x, 1); 13 | } 14 | 15 | P1(int *y, int *x) 16 | { 17 | int r1; int r2; 18 | r1 = READ_ONCE(*x); 19 | smp_mb(); 20 | r2 = READ_ONCE(*y); 21 | } 22 | 23 | exists (1:r1=1 /\ 1:r2=0) 24 | -------------------------------------------------------------------------------- /manual/lwn573436/C-mp+o-wb-o+o-mb-o2.litmus: -------------------------------------------------------------------------------- 1 | C C-MP+o-wb-o+o-mb-o2 2 | (* Forbid: wmb interacting via write-to-read with only one other thread. *) 3 | { 4 | x = 0; 5 | y = 0; 6 | } 7 | 8 | P0(int *x, int *y) 9 | { 10 | WRITE_ONCE(*x, 1); 11 | smp_wmb(); 12 | WRITE_ONCE(*y, 1); 13 | } 14 | 15 | P1(int *y, int *x) 16 | { 17 | int r1; int r2; 18 | r1 = READ_ONCE(*y); 19 | smp_mb(); 20 | r2 = READ_ONCE(*x); 21 | } 22 | 23 | exists (1:r1=1 /\ 1:r2=0) 24 | -------------------------------------------------------------------------------- /manual/lwn573436/C-mp+o-wb-o+o-rb-o.litmus: -------------------------------------------------------------------------------- 1 | C C-MP+o-wb-o+o-rb-o 2 | (* Forbid: wmb interacting with rmb in only one other thread. *) 3 | { 4 | x = 0; 5 | y = 0; 6 | } 7 | 8 | P0(int *x, int *y) 9 | { 10 | WRITE_ONCE(*y, 1); 11 | smp_wmb(); 12 | WRITE_ONCE(*x, 1); 13 | } 14 | 15 | P1(int *y, int *x) 16 | { 17 | int r1; int r2; 18 | r1 = READ_ONCE(*x); 19 | smp_rmb(); 20 | r2 = READ_ONCE(*y); 21 | } 22 | 23 | exists (1:r1=1 /\ 1:r2=0) 24 | -------------------------------------------------------------------------------- /manual/lwn573436/C-mp+o-wb-o+o-rb-o2.litmus: -------------------------------------------------------------------------------- 1 | C C-MP+o-wb-o+o-rb-o2 2 | (* Forbid: wmb interacting with rmb in only one other thread. *) 3 | { 4 | x = 0; 5 | y = 0; 6 | } 7 | 8 | P0(int *x, int *y) 9 | { 10 | WRITE_ONCE(*x, 1); 11 | smp_wmb(); 12 | WRITE_ONCE(*y, 1); 13 | } 14 | 15 | P1(int *y, int *x) 16 | { 17 | int r1; int r2; 18 | r1 = READ_ONCE(*y); 19 | smp_rmb(); 20 | r2 = READ_ONCE(*x); 21 | } 22 | 23 | exists (1:r1=1 /\ 1:r2=0) 24 | -------------------------------------------------------------------------------- /manual/lwn573436/C-r+o-mb-o+o-mb-o.litmus: -------------------------------------------------------------------------------- 1 | C C-R+o-mb-o+o-mb-o 2 | (* Forbid, all full memory barriers. *) 3 | { 4 | x = 0; 5 | y = 0; 6 | } 7 | 8 | P0(int *x, int *y) 9 | { 10 | int r2; 11 | WRITE_ONCE(*x, 2); 12 | smp_mb(); 13 | r2 = READ_ONCE(*y); 14 | } 15 | 16 | P1(int *y, int *x) 17 | { 18 | WRITE_ONCE(*y, 1); 19 | smp_mb(); 20 | WRITE_ONCE(*x, 1); 21 | } 22 | 23 | exists (x=2 /\ 0:r2=0) 24 | -------------------------------------------------------------------------------- /manual/lwn573436/C-r+o-mb-o+o-mb-o2.litmus: -------------------------------------------------------------------------------- 1 | C C-R+o-mb-o+o-mb-o2 2 | (* Forbid, all full memory barriers. *) 3 | { 4 | x = 0; 5 | y = 0; 6 | } 7 | 8 | P0(int *x, int *y) 9 | { 10 | int r2; 11 | WRITE_ONCE(*y, 2); 12 | smp_mb(); 13 | r2 = READ_ONCE(*x); 14 | } 15 | 16 | P1(int *y, int *x) 17 | { 18 | WRITE_ONCE(*x, 1); 19 | smp_mb(); 20 | WRITE_ONCE(*y, 1); 21 | } 22 | 23 | exists (y=2 /\ 0:r2=0) 24 | -------------------------------------------------------------------------------- /manual/lwn573436/C-r+o-mb-o+o-rmb-o2.litmus: -------------------------------------------------------------------------------- 1 | C C-R+o-mb-o+o-rmb-o2 2 | (* Allow, rmb orders only reads. *) 3 | { 4 | x = 0; 5 | y = 0; 6 | } 7 | 8 | P0(int *x, int *y) 9 | { 10 | int r2; 11 | WRITE_ONCE(*y, 2); 12 | smp_mb(); 13 | r2 = READ_ONCE(*x); 14 | } 15 | 16 | P1(int *y, int *x) 17 | { 18 | WRITE_ONCE(*x, 1); 19 | smp_rmb(); 20 | WRITE_ONCE(*y, 1); 21 | } 22 | 23 | exists (y=2 /\ 0:r2=0) 24 | -------------------------------------------------------------------------------- /manual/lwn573436/C-r+o-mb-o+o-wb-o.litmus: -------------------------------------------------------------------------------- 1 | C C-R+o-mb-o+o-wb-o 2 | (* Allow due to it being allowed PowerPC. *) 3 | { 4 | x = 0; 5 | y = 0; 6 | } 7 | 8 | P0(int *x, int *y) 9 | { 10 | int r2; 11 | WRITE_ONCE(*x, 2); 12 | smp_mb(); 13 | r2 = READ_ONCE(*y); 14 | } 15 | 16 | P1(int *y, int *x) 17 | { 18 | WRITE_ONCE(*y, 1); 19 | smp_wmb(); 20 | WRITE_ONCE(*x, 1); 21 | } 22 | 23 | exists (x=2 /\ 0:r2=0) 24 | -------------------------------------------------------------------------------- /manual/lwn573436/C-r+o-mb-o+o-wb-o2.litmus: -------------------------------------------------------------------------------- 1 | C C-R+o-mb-o+o-wb-o2 2 | (* Allow due to it being allowed PowerPC. *) 3 | { 4 | x = 0; 5 | y = 0; 6 | } 7 | 8 | P0(int *x, int *y) 9 | { 10 | int r2; 11 | WRITE_ONCE(*y, 2); 12 | smp_mb(); 13 | r2 = READ_ONCE(*x); 14 | } 15 | 16 | P1(int *y, int *x) 17 | { 18 | WRITE_ONCE(*x, 1); 19 | smp_wmb(); 20 | WRITE_ONCE(*y, 1); 21 | } 22 | 23 | exists (y=2 /\ 0:r2=0) 24 | -------------------------------------------------------------------------------- /manual/lwn573436/C-r+o-wmb-o+o-mb-o2.litmus: -------------------------------------------------------------------------------- 1 | C C-R+o-wmb-o+o-mb-o2 2 | (* Allow, wmb orders only writes. *) 3 | { 4 | x = 0; 5 | y = 0; 6 | } 7 | 8 | P0(int *x, int *y) 9 | { 10 | int r2; 11 | WRITE_ONCE(*y, 2); 12 | smp_wmb(); 13 | r2 = READ_ONCE(*x); 14 | } 15 | 16 | P1(int *y, int *x) 17 | { 18 | WRITE_ONCE(*x, 1); 19 | smp_mb(); 20 | WRITE_ONCE(*y, 1); 21 | } 22 | 23 | exists (y=2 /\ 0:r2=0) 24 | -------------------------------------------------------------------------------- /manual/lwn573436/C-r+o-wmb-o+o-rmb-o2.litmus: -------------------------------------------------------------------------------- 1 | C C-R+o-wmb-o+o-rmb-o2 2 | (* Allow, wmb orders only writes and rmb orders only reads. *) 3 | { 4 | x = 0; 5 | y = 0; 6 | } 7 | 8 | P0(int *x, int *y) 9 | { 10 | int r2; 11 | WRITE_ONCE(*y, 2); 12 | smp_wmb(); 13 | r2 = READ_ONCE(*x); 14 | } 15 | 16 | P1(int *y, int *x) 17 | { 18 | WRITE_ONCE(*x, 1); 19 | smp_rmb(); 20 | WRITE_ONCE(*y, 1); 21 | } 22 | 23 | exists (y=2 /\ 0:r2=0) 24 | -------------------------------------------------------------------------------- /manual/lwn573436/C-s+o-mb-o+o-mb-o.litmus: -------------------------------------------------------------------------------- 1 | C C-S+o-mb-o+o-mb-o 2 | (* Forbid, all full memory barriers. *) 3 | { 4 | x = 0; 5 | y = 0; 6 | } 7 | 8 | P0(int *x, int *y) 9 | { 10 | WRITE_ONCE(*y, 2); 11 | smp_mb(); 12 | WRITE_ONCE(*x, 1); 13 | } 14 | 15 | P1(int *y, int *x) 16 | { 17 | int r1 = READ_ONCE(*x); 18 | smp_mb(); 19 | WRITE_ONCE(*y, 1); 20 | } 21 | 22 | exists (y=2 /\ 1:r1=1) 23 | -------------------------------------------------------------------------------- /manual/lwn573436/C-s+o-mb-o+o-mb-o2.litmus: -------------------------------------------------------------------------------- 1 | C C-S+o-mb-o+o-mb-o2 2 | (* Forbid, all full memory barriers. *) 3 | { 4 | x = 0; 5 | y = 0; 6 | } 7 | 8 | P0(int *x, int *y) 9 | { 10 | WRITE_ONCE(*x, 2); 11 | smp_mb(); 12 | WRITE_ONCE(*y, 1); 13 | } 14 | 15 | P1(int *y, int *x) 16 | { 17 | int r1 = READ_ONCE(*y); 18 | smp_mb(); 19 | WRITE_ONCE(*x, 1); 20 | } 21 | 22 | exists (x=2 /\ 1:r1=1) 23 | -------------------------------------------------------------------------------- /manual/lwn573436/C-s+o-wb-o+o-mb-o.litmus: -------------------------------------------------------------------------------- 1 | C C-S+o-wb-o+o-mb-o 2 | (* Forbid: wmb interacting via write-to-read with only one other thread. *) 3 | { 4 | x = 0; 5 | y = 0; 6 | } 7 | 8 | P0(int *x, int *y) 9 | { 10 | WRITE_ONCE(*y, 2); 11 | smp_wmb(); 12 | WRITE_ONCE(*x, 1); 13 | } 14 | 15 | P1(int *y, int *x) 16 | { 17 | int r1 = READ_ONCE(*x); 18 | smp_mb(); 19 | WRITE_ONCE(*y, 1); 20 | } 21 | 22 | exists (y=2 /\ 1:r1=1) 23 | -------------------------------------------------------------------------------- /manual/lwn573436/C-s+o-wb-o+o-mb-o2.litmus: -------------------------------------------------------------------------------- 1 | C C-S+o-wb-o+o-mb-o2 2 | (* Forbid: wmb interacting via write-to-read with only one other thread. *) 3 | { 4 | x = 0; 5 | y = 0; 6 | } 7 | 8 | P0(int *x, int *y) 9 | { 10 | WRITE_ONCE(*x, 2); 11 | smp_wmb(); 12 | WRITE_ONCE(*y, 1); 13 | } 14 | 15 | P1(int *y, int *x) 16 | { 17 | int r1 = READ_ONCE(*y); 18 | smp_mb(); 19 | WRITE_ONCE(*x, 1); 20 | } 21 | 22 | exists (x=2 /\ 1:r1=1) 23 | -------------------------------------------------------------------------------- /manual/lwn573436/C-sb+o-mb-o+o-mb-o.litmus: -------------------------------------------------------------------------------- 1 | C C-SB+o-mb-o+o-mb-o 2 | (* Forbid, all full memory barriers. *) 3 | { 4 | x = 0; 5 | y = 0; 6 | } 7 | 8 | P0(int *x, int *y) 9 | { 10 | int r2; 11 | WRITE_ONCE(*x, 1); 12 | smp_mb(); 13 | r2 = READ_ONCE(*y); 14 | } 15 | 16 | P1(int *y, int *x) 17 | { 18 | int r4; 19 | WRITE_ONCE(*y, 1); 20 | smp_mb(); 21 | r4 = READ_ONCE(*x); 22 | } 23 | 24 | exists (0:r2=0 /\ 1:r4=0) 25 | -------------------------------------------------------------------------------- /manual/lwn573436/C-wo+ro-mb-ro+wo-mb-ro.litmus: -------------------------------------------------------------------------------- 1 | C C-wo+ro-mb-ro+wo-mb-ro 2 | (* Forbid, all full memory barriers. *) 3 | { 4 | x = 0; 5 | y = 0; 6 | } 7 | 8 | P0(int *x) 9 | { 10 | WRITE_ONCE(*x, 1); 11 | } 12 | 13 | P1(int *y, int *x) 14 | { 15 | int r1; int r2; 16 | r1 = READ_ONCE(*x); 17 | smp_mb(); 18 | r2 = READ_ONCE(*y); 19 | } 20 | 21 | P2(int *x, int *y) 22 | { 23 | int r4; 24 | WRITE_ONCE(*y, 1); 25 | smp_mb(); 26 | r4 = READ_ONCE(*x); 27 | } 28 | 29 | exists (1:r1=1 /\ 1:r2=0 /\ 2:r4=0) 30 | -------------------------------------------------------------------------------- /manual/lwn573436/C-wo+ro-mb-wo+wo-mb-ro.litmus: -------------------------------------------------------------------------------- 1 | C C-wo+ro-mb-wo+wo-mb-ro 2 | (* Forbid, all full memory barriers. *) 3 | { 4 | x = 0; 5 | y = 0; 6 | } 7 | 8 | P0(int *x) 9 | { 10 | WRITE_ONCE(*x, 1); 11 | } 12 | 13 | P1(int *y, int *x) 14 | { 15 | int r1 = READ_ONCE(*x); 16 | smp_mb(); 17 | WRITE_ONCE(*y, 1); 18 | } 19 | 20 | P2(int *x, int *y) 21 | { 22 | int r4; 23 | WRITE_ONCE(*y, 2); 24 | smp_mb(); 25 | r4 = READ_ONCE(*x); 26 | } 27 | 28 | exists (y=2 /\ 1:r1=1 /\ 2:r4=0) 29 | -------------------------------------------------------------------------------- /manual/lwn573436/C-wo+ro-mb-wo+wo-mb-ro2.litmus: -------------------------------------------------------------------------------- 1 | C C-wo+ro-mb-wo+wo-mb-ro2 2 | (* Forbid, all full memory barriers. *) 3 | { 4 | x = 0; 5 | y = 0; 6 | } 7 | 8 | P0(int *y) 9 | { 10 | WRITE_ONCE(*y, 1); 11 | } 12 | 13 | P1(int *y, int *x) 14 | { 15 | int r1 = READ_ONCE(*y); 16 | smp_mb(); 17 | WRITE_ONCE(*x, 1); 18 | } 19 | 20 | P2(int *x, int *y) 21 | { 22 | int r4; 23 | WRITE_ONCE(*x, 2); 24 | smp_mb(); 25 | r4 = READ_ONCE(*y); 26 | } 27 | 28 | exists (x=2 /\ 1:r1=1 /\ 2:r4=0) 29 | -------------------------------------------------------------------------------- /manual/lwn573436/C-wrc+o-mb-o+o-mb-o.litmus: -------------------------------------------------------------------------------- 1 | C C-WRC+o-mb-o+o-mb-o 2 | (* Forbid, all full memory barriers. *) 3 | { 4 | x = 0; 5 | y = 0; 6 | } 7 | 8 | P0(int *y) 9 | { 10 | WRITE_ONCE(*y, 1); 11 | } 12 | 13 | P1(int *y, int *x) 14 | { 15 | int r3 = READ_ONCE(*y); 16 | smp_mb(); 17 | WRITE_ONCE(*x, 1); 18 | } 19 | 20 | P2(int *x, int *y) 21 | { 22 | int r1; int r2; 23 | r1 = READ_ONCE(*x); 24 | smp_mb(); 25 | r2 = READ_ONCE(*y); 26 | } 27 | 28 | exists (1:r3=1 /\ 2:r1=1 /\ 2:r2=0) 29 | -------------------------------------------------------------------------------- /manual/lwn573436/C-wrc+o-mb-o+o-mb-o2.litmus: -------------------------------------------------------------------------------- 1 | C C-WRC+o-mb-o+o-mb-o2 2 | (* Forbid, all full memory barriers. *) 3 | { 4 | x = 0; 5 | y = 0; 6 | } 7 | 8 | P0(int *x) 9 | { 10 | WRITE_ONCE(*x, 1); 11 | } 12 | 13 | P1(int *y, int *x) 14 | { 15 | int r3 = READ_ONCE(*x); 16 | smp_mb(); 17 | WRITE_ONCE(*y, 1); 18 | } 19 | 20 | P2(int *x, int *y) 21 | { 22 | int r1; int r2; 23 | r1 = READ_ONCE(*y); 24 | smp_mb(); 25 | r2 = READ_ONCE(*x); 26 | } 27 | 28 | exists (1:r3=1 /\ 2:r1=1 /\ 2:r2=0) 29 | -------------------------------------------------------------------------------- /manual/lwn573436/C-wrc+o-mb-o+o-rb-o.litmus: -------------------------------------------------------------------------------- 1 | C C-WRC+o-mb-o+o-rb-o 2 | (* Allow: rmb is not transitive. (Forbidden by PowerPC, but...) *) 3 | { 4 | x = 0; 5 | y = 0; 6 | } 7 | 8 | P0(int *y) 9 | { 10 | WRITE_ONCE(*y, 1); 11 | } 12 | 13 | P1(int *y, int *x) 14 | { 15 | int r3 = READ_ONCE(*y); 16 | smp_mb(); 17 | WRITE_ONCE(*x, 1); 18 | } 19 | 20 | P2(int *x, int *y) 21 | { 22 | int r1; int r2; 23 | r1 = READ_ONCE(*x); 24 | smp_rmb(); 25 | r2 = READ_ONCE(*y); 26 | } 27 | 28 | exists (1:r3=1 /\ 2:r1=1 /\ 2:r2=0) 29 | -------------------------------------------------------------------------------- /manual/lwn573436/C-wrc+o-mb-o+o-rb-o2.litmus: -------------------------------------------------------------------------------- 1 | C C-WRC+o-mb-o+o-rb-o2 2 | (* Allow: rmb is not transitive. (Forbidden by PowerPC, but...) *) 3 | { 4 | x = 0; 5 | y = 0; 6 | } 7 | 8 | P0(int *x) 9 | { 10 | WRITE_ONCE(*x, 1); 11 | } 12 | 13 | P1(int *y, int *x) 14 | { 15 | int r3 = READ_ONCE(*x); 16 | smp_mb(); 17 | WRITE_ONCE(*y, 1); 18 | } 19 | 20 | P2(int *x, int *y) 21 | { 22 | int r1; int r2; 23 | r1 = READ_ONCE(*y); 24 | smp_rmb(); 25 | r2 = READ_ONCE(*x); 26 | } 27 | 28 | exists (1:r3=1 /\ 2:r1=1 /\ 2:r2=0) 29 | -------------------------------------------------------------------------------- /manual/lwn573436/C-wrc+o-mb-o+o-rmb-o.litmus: -------------------------------------------------------------------------------- 1 | C C-WRC+o-mb-o+o-rmb-o 2 | (* 3 | * Allow, rmb not transitive (despite being forbidden on Power). 4 | * Use w[release] and r[acquire] to cheaply forbid. 5 | *) 6 | { 7 | x = 0; 8 | y = 0; 9 | } 10 | 11 | P0(int *y) 12 | { 13 | WRITE_ONCE(*y, 1); 14 | } 15 | 16 | P1(int *y, int *x) 17 | { 18 | int r3 = READ_ONCE(*y); 19 | smp_mb(); 20 | WRITE_ONCE(*x, 1); 21 | } 22 | 23 | P2(int *x, int *y) 24 | { 25 | int r1; int r2; 26 | r1 = READ_ONCE(*x); 27 | smp_rmb(); 28 | r2 = READ_ONCE(*y); 29 | } 30 | 31 | exists (1:r3=1 /\ 2:r1=1 /\ 2:r2=0) 32 | -------------------------------------------------------------------------------- /manual/lwn573436/README: -------------------------------------------------------------------------------- 1 | Harvested from Jade's lwn573436 group of litmus tests. 2 | -------------------------------------------------------------------------------- /manual/lwn573497/.gitignore: -------------------------------------------------------------------------------- 1 | !*.litmus 2 | -------------------------------------------------------------------------------- /manual/lwn573497/C-2+2w+rl-o-o-rul+o-srcu-o.litmus: -------------------------------------------------------------------------------- 1 | C C-2+2w+rl-o-o-rul+o-srcu-o 2 | (* Forbid: At least as many GPs and RCU RS CSes. *) 3 | { 4 | x = 0; 5 | y = 0; 6 | } 7 | 8 | P0(int *x, int *y) 9 | { 10 | rcu_read_lock(); 11 | WRITE_ONCE(*x, 1); 12 | WRITE_ONCE(*y, 2); 13 | rcu_read_unlock(); 14 | } 15 | 16 | P1(int *y, int *x) 17 | { 18 | WRITE_ONCE(*y, 1); 19 | synchronize_rcu(); 20 | WRITE_ONCE(*x, 2); 21 | } 22 | 23 | exists (x=1 /\ y=1) 24 | -------------------------------------------------------------------------------- /manual/lwn573497/C-iriw+o-o+o-o.litmus: -------------------------------------------------------------------------------- 1 | C C-IRIW+o-o+o-o 2 | (* Allow: No ordering. *) 3 | { 4 | x = 0; 5 | y = 0; 6 | } 7 | 8 | P0(int *x, int *y) 9 | { 10 | int r1; int r2; 11 | r1 = READ_ONCE(*x); 12 | r2 = READ_ONCE(*y); 13 | } 14 | 15 | P1(int *y, int *x) 16 | { 17 | int r3; int r4; 18 | r3 = READ_ONCE(*y); 19 | r4 = READ_ONCE(*x); 20 | } 21 | 22 | P2(int *x) 23 | { 24 | WRITE_ONCE(*x, 1); 25 | } 26 | 27 | P3(int *y) 28 | { 29 | WRITE_ONCE(*y, 1); 30 | } 31 | 32 | exists (0:r1 = 1 /\ 0:r2 = 0 /\ 1:r3 = 1 /\ 1:r4 = 0) 33 | -------------------------------------------------------------------------------- /manual/lwn573497/C-lb+rl-o-o-rul+o-srcu-o.litmus: -------------------------------------------------------------------------------- 1 | C C-LB+rl-o-o-rul+o-srcu-o 2 | (* Forbid: As many GPs and RCU RS CSes. *) 3 | { 4 | x = 0; 5 | y = 0; 6 | } 7 | 8 | P0(int *x, int *y) 9 | { 10 | int r1; 11 | rcu_read_lock(); 12 | r1 = READ_ONCE(*x); 13 | WRITE_ONCE(*y, 1); 14 | rcu_read_unlock(); 15 | } 16 | 17 | P1(int *y, int *x) 18 | { 19 | int r3; 20 | r3 = READ_ONCE(*y); 21 | synchronize_rcu(); 22 | WRITE_ONCE(*x, 1); 23 | } 24 | 25 | exists(0:r1=1 /\ 1:r3=1) 26 | -------------------------------------------------------------------------------- /manual/lwn573497/C-mp+o-srcu-o+rl-o-o+rul.litmus: -------------------------------------------------------------------------------- 1 | C C-MP+o-srcu-o+rl-o-o+rul 2 | (* Forbid: At least as many GPs and RCU RS CSes. *) 3 | { 4 | a = 1; 5 | x = 2; 6 | } 7 | 8 | P0(int *x, int *a) 9 | { 10 | WRITE_ONCE(*a, 3); 11 | synchronize_rcu(); 12 | WRITE_ONCE(*x, 4); 13 | } 14 | 15 | P1(int *a, int *x) 16 | { 17 | int r1; int r2; 18 | rcu_read_lock(); 19 | r1 = READ_ONCE(*x); 20 | r2 = READ_ONCE(*a); 21 | rcu_read_unlock(); 22 | } 23 | 24 | exists (1:r1 = 4 /\ 1:r2 = 1) 25 | -------------------------------------------------------------------------------- /manual/lwn573497/C-mp+rl-o-o-rul+o-srcu-o.litmus: -------------------------------------------------------------------------------- 1 | C C-MP+rl-o-o-rul+o-srcu-o 2 | (* Forbid: At least as many GPs and RCU RS CSes. *) 3 | { 4 | a = 1; 5 | x = 2; 6 | } 7 | 8 | P0(int *x, int *a) 9 | { 10 | rcu_read_lock(); 11 | WRITE_ONCE(*a, 3); 12 | WRITE_ONCE(*x, 4); 13 | rcu_read_unlock(); 14 | } 15 | 16 | P1(int *a, int *x) 17 | { 18 | int r1; int r2; 19 | r1 = READ_ONCE(*x); 20 | synchronize_rcu(); 21 | r2 = READ_ONCE(*a); 22 | } 23 | 24 | exists (1:r1 = 4 /\ 1:r2 = 1) 25 | -------------------------------------------------------------------------------- /manual/lwn573497/C-r+o-o+o-o.litmus: -------------------------------------------------------------------------------- 1 | C C-R+o-o+o-o 2 | (* Allowed: No ordering. *) 3 | { 4 | x = 0; 5 | y = 0; 6 | } 7 | 8 | P0(int *x, int *y) 9 | { 10 | int r2; 11 | WRITE_ONCE(*x, 2); 12 | r2 = READ_ONCE(*y); 13 | } 14 | 15 | P1(int *y, int *x) 16 | { 17 | WRITE_ONCE(*y, 1); 18 | WRITE_ONCE(*x, 1); 19 | } 20 | 21 | exists (x=2 /\ 0:r2=0) 22 | -------------------------------------------------------------------------------- /manual/lwn573497/C-r+rl-rul+srcu.litmus: -------------------------------------------------------------------------------- 1 | C C-R+rl-rul+srcu 2 | (* Forbid: At least as many GPs and RCU RS CSes. *) 3 | { 4 | x = 0; 5 | y = 0; 6 | } 7 | 8 | P0(int *x, int *y) 9 | { 10 | int r2; 11 | rcu_read_lock(); 12 | WRITE_ONCE(*x, 2); 13 | r2 = READ_ONCE(*y); 14 | rcu_read_unlock(); 15 | } 16 | 17 | P1(int *y, int *x) 18 | { 19 | WRITE_ONCE(*y, 1); 20 | synchronize_rcu(); 21 | WRITE_ONCE(*x, 1); 22 | } 23 | 24 | exists (x=2 /\ 0:r2=0) 25 | -------------------------------------------------------------------------------- /manual/lwn573497/C-r+srcu+rl-rul.litmus: -------------------------------------------------------------------------------- 1 | C C-R+srcu+rl-rul 2 | (* Forbid: At least as many GPs and RCU RS CSes. *) 3 | { 4 | x = 0; 5 | y = 0; 6 | } 7 | 8 | P0(int *x, int *y) 9 | { 10 | int r2; 11 | WRITE_ONCE(*x, 2); 12 | synchronize_rcu(); 13 | r2 = READ_ONCE(*y); 14 | } 15 | 16 | P1(int *y, int *x) 17 | { 18 | rcu_read_lock(); 19 | WRITE_ONCE(*y, 1); 20 | WRITE_ONCE(*x, 1); 21 | rcu_read_unlock(); 22 | } 23 | 24 | exists (x=2 /\ 0:r2=0) 25 | -------------------------------------------------------------------------------- /manual/lwn573497/C-s+o-assign+rl-deref-addr-rul.litmus: -------------------------------------------------------------------------------- 1 | C C-s+o-assign+rl-deref-addr-rul 2 | (* 3 | * Forbid: Address dependency in P1 and assign in P0, write-to-read 4 | * relationships. (Note: Reworked to apply to ARM as well as PowerPC.) 5 | *) 6 | { 7 | z = 42; 8 | int *x = &z; 9 | y = 0; 10 | } 11 | 12 | P0(int **x, int *y) 13 | { 14 | WRITE_ONCE(*y, 2); 15 | rcu_assign_pointer(*x, y); 16 | } 17 | 18 | P1(int **x) 19 | { 20 | int *r1; 21 | rcu_read_lock(); 22 | r1 = rcu_dereference(*x); 23 | WRITE_ONCE(*r1, 1); 24 | rcu_read_unlock(); 25 | } 26 | 27 | exists (y=2 /\ 1:r1=y) 28 | -------------------------------------------------------------------------------- /manual/lwn573497/C-s+o-assign+rl-deref-rul.litmus: -------------------------------------------------------------------------------- 1 | C C-s+o-assign+rl-deref-rul 2 | (* Allow, no ordering on P1. *) 3 | { 4 | x = 0; 5 | y = 0; 6 | } 7 | 8 | P0(int *x, int *y) 9 | { 10 | WRITE_ONCE(*y, 2); 11 | rcu_assign_pointer(*(char **)x, (char *)1); 12 | } 13 | 14 | P1(int *y, int *x) 15 | { 16 | int r1; 17 | rcu_read_lock(); 18 | r1 = (int)rcu_dereference(*(char **)x); 19 | WRITE_ONCE(*y, 1); 20 | rcu_read_unlock(); 21 | } 22 | 23 | exists (y=2 /\ 1:r1=1) 24 | -------------------------------------------------------------------------------- /manual/lwn573497/C-s+rl-o-rul+srcu.litmus: -------------------------------------------------------------------------------- 1 | C C-s+rl-o-rul+srcu 2 | (* Forbid: At least as many GPs and RCU RS CSes. *) 3 | { 4 | x = 0; 5 | y = 0; 6 | } 7 | 8 | P0(int *x, int *y) 9 | { 10 | rcu_read_lock(); 11 | WRITE_ONCE(*y, 2); 12 | WRITE_ONCE(*x, 1); 13 | rcu_read_unlock(); 14 | } 15 | 16 | P1(int *y, int *x) 17 | { 18 | int r1 = READ_ONCE(*x); 19 | synchronize_rcu(); 20 | WRITE_ONCE(*y, 1); 21 | } 22 | 23 | exists (y=2 /\ 1:r1=1) 24 | -------------------------------------------------------------------------------- /manual/lwn573497/C-s+srcu+rl-o-rul.litmus: -------------------------------------------------------------------------------- 1 | C C-s+srcu+rl-o-rul 2 | (* Forbid: At least as many GPs and RCU RS CSes. *) 3 | { 4 | x = 0; 5 | y = 0; 6 | } 7 | 8 | P0(int *x, int *y) 9 | { 10 | WRITE_ONCE(*y, 2); 11 | synchronize_rcu(); 12 | WRITE_ONCE(*x, 1); 13 | } 14 | 15 | P1(int *y, int *x) 16 | { 17 | int r1; 18 | rcu_read_lock(); 19 | r1 = READ_ONCE(*x); 20 | WRITE_ONCE(*y, 1); 21 | rcu_read_unlock(); 22 | } 23 | 24 | exists (y=2 /\ 1:r1=1) 25 | -------------------------------------------------------------------------------- /manual/lwn573497/C-sb+rl-rul+srcu.litmus: -------------------------------------------------------------------------------- 1 | C C-SB+rl-rul+srcu 2 | (* Forbid: At least as many GPs and RCU RS CSes. *) 3 | { 4 | x = 0; 5 | y = 0; 6 | } 7 | 8 | P0(int *x, int *y) 9 | { 10 | int r2; 11 | rcu_read_lock(); 12 | WRITE_ONCE(*x, 1); 13 | r2 = READ_ONCE(*y); 14 | rcu_read_unlock(); 15 | } 16 | 17 | P1(int *y, int *x) 18 | { 19 | int r4; 20 | WRITE_ONCE(*y, 1); 21 | synchronize_rcu(); 22 | r4 = READ_ONCE(*x); 23 | } 24 | 25 | exists (0:r2=0 /\ 1:r4=0) 26 | -------------------------------------------------------------------------------- /manual/lwn573497/C-swap-mp+rl-o-o-rul+o-srcu-o.litmus: -------------------------------------------------------------------------------- 1 | C C-swap-MP+rl-o-o-rul+o-srcu-o 2 | (* Forbid: At least as many GPs and RCU RS CSes. *) 3 | { 4 | a = 1; 5 | x = 2; 6 | } 7 | 8 | P0(int *x, int *a) 9 | { 10 | rcu_read_lock(); 11 | WRITE_ONCE(*x, 4); 12 | WRITE_ONCE(*a, 3); 13 | rcu_read_unlock(); 14 | } 15 | 16 | P1(int *a, int *x) 17 | { 18 | int r1; int r2; 19 | r1 = READ_ONCE(*x); 20 | synchronize_rcu(); 21 | r2 = READ_ONCE(*a); 22 | } 23 | 24 | exists (1:r1 = 4 /\ 1:r2 = 1) 25 | -------------------------------------------------------------------------------- /manual/lwn573497/C-w+ro-ro+wo-ro.litmus: -------------------------------------------------------------------------------- 1 | C C-wo+ro-ro+wo-ro 2 | (* Allowed: No ordering. *) 3 | { 4 | x = 0; 5 | y = 0; 6 | } 7 | 8 | P0(int *x) 9 | { 10 | WRITE_ONCE(*x, 1); 11 | } 12 | 13 | P1(int *y, int *x) 14 | { 15 | int r1; int r2; 16 | r1 = READ_ONCE(*x); 17 | r2 = READ_ONCE(*y); 18 | } 19 | 20 | P2(int *x, int *y) 21 | { 22 | int r4; 23 | WRITE_ONCE(*y, 1); 24 | r4 = READ_ONCE(*x); 25 | } 26 | 27 | exists (1:r1=1 /\ 1:r2=0 /\ 2:r4=0) 28 | -------------------------------------------------------------------------------- /manual/lwn573497/C-w+ro-srcu-wo+rl-wo-ro-rul.litmus: -------------------------------------------------------------------------------- 1 | C C-w+ro-srcu-wo+rl-wo-ro-rul 2 | (* Forbidden: As many GPs and RCU RS CSes, implicit MBs and A-cumulativity. *) 3 | { 4 | x = 0; 5 | y = 0; 6 | } 7 | 8 | P0(int *x) 9 | { 10 | WRITE_ONCE(*x, 1); 11 | } 12 | 13 | P1(int *y, int *x) 14 | { 15 | int r1 = READ_ONCE(*x); 16 | synchronize_rcu(); 17 | WRITE_ONCE(*y, 1); 18 | } 19 | 20 | P2(int *x, int *y) 21 | { 22 | int r4; 23 | rcu_read_lock(); 24 | WRITE_ONCE(*y, 2); 25 | r4 = READ_ONCE(*x); 26 | rcu_read_unlock(); 27 | } 28 | 29 | exists (y=2 /\ 1:r1=1 /\ 2:r4=0) 30 | -------------------------------------------------------------------------------- /manual/lwn573497/C-w+ro-wo+wo-ro.litmus: -------------------------------------------------------------------------------- 1 | C C-wo+ro-wo+wo-ro 2 | (* Allowed: No ordering. *) 3 | { 4 | x = 0; 5 | y = 0; 6 | } 7 | 8 | P0(int *x) 9 | { 10 | WRITE_ONCE(*x, 1); 11 | } 12 | 13 | P1(int *y, int *x) 14 | { 15 | int r1 = READ_ONCE(*x); 16 | WRITE_ONCE(*y, 1); 17 | } 18 | 19 | P2(int *x, int *y) 20 | { 21 | int r4; 22 | WRITE_ONCE(*y, 2); 23 | r4 = READ_ONCE(*x); 24 | } 25 | 26 | exists (y=2 /\ 1:r1=1 /\ 2:r4=0) 27 | -------------------------------------------------------------------------------- /manual/lwn573497/C-wrc+o+o-srcu-o+rl-o-o-rul.litmus: -------------------------------------------------------------------------------- 1 | C C-WRC+o+o-srcu-o+rl-o-o-rul 2 | (* Forbidden: As many GPs and RCU RS CSes, implicit MBs and A-cumulativity. *) 3 | { 4 | x = 0; 5 | y = 0; 6 | } 7 | 8 | P0(int *y) 9 | { 10 | WRITE_ONCE(*y, 1); 11 | } 12 | 13 | P1(int *y, int *x) 14 | { 15 | int r3 = READ_ONCE(*y); 16 | synchronize_rcu(); 17 | WRITE_ONCE(*x, 1); 18 | } 19 | 20 | P2(int *x, int *y) 21 | { 22 | int r1; int r2; 23 | rcu_read_lock(); 24 | r1 = READ_ONCE(*x); 25 | r2 = READ_ONCE(*y); 26 | rcu_read_unlock(); 27 | } 28 | 29 | exists (1:r3=1 /\ 2:r1=1 /\ 2:r2=0) 30 | -------------------------------------------------------------------------------- /manual/lwn573497/C-wrc+o-o+o-o.litmus: -------------------------------------------------------------------------------- 1 | C C-WRC+o-o+o-o 2 | (* Allowed: No ordering. *) 3 | { 4 | x = 0; 5 | y = 0; 6 | } 7 | 8 | P0(int *y) 9 | { 10 | WRITE_ONCE(*y, 1); 11 | } 12 | 13 | P1(int *y, int *x) 14 | { 15 | int r3 = READ_ONCE(*y); 16 | WRITE_ONCE(*x, 1); 17 | } 18 | 19 | P2(int *x, int *y) 20 | { 21 | int r1; int r2; 22 | r1 = READ_ONCE(*x); 23 | r2 = READ_ONCE(*y); 24 | } 25 | 26 | exists (1:r3=1 /\ 2:r1=1 /\ 2:r2=0) 27 | -------------------------------------------------------------------------------- /manual/lwn573497/README: -------------------------------------------------------------------------------- 1 | Harvested from Jade's lwn573497 group of litmus tests. 2 | -------------------------------------------------------------------------------- /manual/lwn573497/swap-mp+o-srcu-o+rl-o-o+rul.litmus: -------------------------------------------------------------------------------- 1 | LISA MP+o-srcu-o+rl-o-o+rul 2 | (* Forbid: At least as many GPs and RCU RS CSes. *) 3 | { 4 | a = 1; 5 | x = 2; 6 | } 7 | P0 | P1 ; 8 | | f[rcu_read_lock] ; 9 | w[once] a 3 | r[once] r1 x ; 10 | f[sync] | ; 11 | w[once] x 4 | r[once] r2 a ; 12 | | f[rcu_read_unlock] ; 13 | exists (1:r1 = 4 /\ 1:r2 = 1) 14 | -------------------------------------------------------------------------------- /manual/memb/C-Goldblatt-memb-1.litmus: -------------------------------------------------------------------------------- 1 | C C-Goldblatt-memb-1 2 | (* 3 | * Result: Never 4 | *) 5 | 6 | { 7 | } 8 | 9 | P0(int *x0, int *x1) 10 | { 11 | WRITE_ONCE(*x0, 1); 12 | r1 = READ_ONCE(*x1); 13 | } 14 | 15 | 16 | P1(int *x0, int *x1) 17 | { 18 | WRITE_ONCE(*x1, 1); 19 | smp_memb(); 20 | r2 = READ_ONCE(*x0); 21 | } 22 | 23 | exists (0:r1=0 /\ 1:r2=0) 24 | -------------------------------------------------------------------------------- /manual/memb/C-Goldblatt-memb-2.litmus: -------------------------------------------------------------------------------- 1 | C C-Goldblatt-memb-2 2 | (* 3 | * Result: Sometimes 4 | *) 5 | 6 | { 7 | } 8 | 9 | P0(int *x0, int *x1) 10 | { 11 | WRITE_ONCE(*x0, 1); 12 | r1 = READ_ONCE(*x1); 13 | } 14 | 15 | 16 | P1(int *x1, int *x2) 17 | { 18 | WRITE_ONCE(*x1, 1); 19 | smp_memb(); 20 | r1 = READ_ONCE(*x2); 21 | } 22 | 23 | P2(int *x2, int *x0) 24 | { 25 | WRITE_ONCE(*x2, 1); 26 | r1 = READ_ONCE(*x0); 27 | } 28 | 29 | exists (0:r1=0 /\ 1:r1=0 /\ 2:r1=0) 30 | -------------------------------------------------------------------------------- /manual/memory_barriers/.gitignore: -------------------------------------------------------------------------------- 1 | !*.litmus 2 | -------------------------------------------------------------------------------- /manual/memory_barriers/C-coRR+o-o+o.litmus: -------------------------------------------------------------------------------- 1 | C C-coRR+o-o+o 2 | (* Forbidden, as the cycle violates coherence. *) 3 | { 4 | x = 0; 5 | } 6 | 7 | P0(int *x) 8 | { 9 | int r1; int r2; 10 | r1 = READ_ONCE(*x); 11 | r2 = READ_ONCE(*x); 12 | } 13 | 14 | P1(int *x) 15 | { 16 | WRITE_ONCE(*x, 1); 17 | } 18 | 19 | exists (0:r1=1 /\ 0:r2=0) 20 | -------------------------------------------------------------------------------- /manual/memory_barriers/C-coRW1+o+o.litmus: -------------------------------------------------------------------------------- 1 | C C-coRW1+o+o 2 | (* Forbidden, as the cycle violates coherence. *) 3 | { 4 | x = 0; 5 | } 6 | 7 | P0(int *x) 8 | { 9 | int r1; 10 | r1 = READ_ONCE(*x); 11 | WRITE_ONCE(*x, 1); 12 | } 13 | 14 | exists (0:r1=1) 15 | -------------------------------------------------------------------------------- /manual/memory_barriers/C-coRW2+o+o.litmus: -------------------------------------------------------------------------------- 1 | C C-coRW2+o+o 2 | (* Forbidden, as the cycle violates coherence. *) 3 | { 4 | x = 0; 5 | } 6 | 7 | P0(int *x) 8 | { 9 | int r1; 10 | r1 = READ_ONCE(*x); 11 | WRITE_ONCE(*x, 1); 12 | } 13 | 14 | P1(int *x) 15 | { 16 | WRITE_ONCE(*x, 2); 17 | } 18 | 19 | exists (0:r1=2 /\ x=2) 20 | -------------------------------------------------------------------------------- /manual/memory_barriers/C-coWR+o+o.litmus: -------------------------------------------------------------------------------- 1 | C C-coWR+once+once 2 | (* Forbidden, as the cycle violates coherence. *) 3 | { 4 | x = 0; 5 | } 6 | 7 | P0(int *x) 8 | { 9 | int r1; 10 | WRITE_ONCE(*x, 1); 11 | r1 = READ_ONCE(*x); 12 | } 13 | 14 | P1(int *x) 15 | { 16 | WRITE_ONCE(*x, 2); 17 | } 18 | 19 | exists (0:r1=2 /\ x=1) 20 | -------------------------------------------------------------------------------- /manual/memory_barriers/C-coWW+o+o.litmus: -------------------------------------------------------------------------------- 1 | C C-coWW+o+o 2 | (* Forbidden, as the cycle violates coherence. *) 3 | { 4 | x = 0; 5 | } 6 | 7 | P0(int *x) 8 | { 9 | WRITE_ONCE(*x, 1); 10 | WRITE_ONCE(*x, 2); 11 | } 12 | 13 | exists (x=1) 14 | -------------------------------------------------------------------------------- /manual/memory_barriers/C-mp+o-o+o-o.litmus: -------------------------------------------------------------------------------- 1 | C C-MP+oo+oo 2 | (* Allowed: No ordering. *) 3 | { 4 | a = 1; 5 | x = 2; 6 | } 7 | 8 | P0(int *x, int *a) 9 | { 10 | WRITE_ONCE(*a, 3); 11 | WRITE_ONCE(*x, 4); 12 | } 13 | 14 | P1(int *a, int *x) 15 | { 16 | int r1; int r2; 17 | r1 = READ_ONCE(*x); 18 | r2 = READ_ONCE(*a); 19 | } 20 | 21 | exists (1:r1 = 4 /\ 1:r2 = 1) 22 | -------------------------------------------------------------------------------- /manual/memory_barriers/C-mp+o-wb-o+loc-rb-loc.litmus: -------------------------------------------------------------------------------- 1 | C C-MP+o-wb-o+loc-rb-loc 2 | (* 3 | * Forbidden: rmb and wmb with write-to-read relationship with one 4 | * other thread. 5 | *) 6 | { 7 | a = 0; 8 | x = 9; 9 | } 10 | 11 | P0(int *x, int *a) 12 | { 13 | WRITE_ONCE(*a, 1); 14 | smp_wmb(); 15 | WRITE_ONCE(*x, 2); 16 | } 17 | 18 | P1(int *a, int *x) 19 | { 20 | int r1; int r2; int r3; 21 | r1 = READ_ONCE(*x); 22 | r2 = READ_ONCE(*a); 23 | smp_rmb(); 24 | r3 = READ_ONCE(*a); 25 | } 26 | 27 | exists (1:r1 = 2 /\ 1:r3=0) 28 | -------------------------------------------------------------------------------- /manual/memory_barriers/C-mp+o-wb-o+o-rb+o.litmus: -------------------------------------------------------------------------------- 1 | C C-MP+once-wb-once+once-rb-once 2 | (* 3 | * Forbidden: rmb and wmb with write-to-read relationship with one 4 | * other thread. 5 | *) 6 | { 7 | a = 0; 8 | x = 0; 9 | } 10 | 11 | P0(int *x, int *a) 12 | { 13 | WRITE_ONCE(*a, 1); 14 | smp_wmb(); 15 | WRITE_ONCE(*x, 2); 16 | } 17 | 18 | P1(int *a, int *x) 19 | { 20 | int r1; int r2; 21 | r1 = READ_ONCE(*x); 22 | smp_rmb(); 23 | r2 = READ_ONCE(*a); 24 | } 25 | 26 | exists (1:r1 = 2 /\ 1:r2 = 0) 27 | -------------------------------------------------------------------------------- /manual/memory_barriers/C-wo+ro-mb-ro+wo-mb-ro.litmus: -------------------------------------------------------------------------------- 1 | C C-Wo+Ro-mb-Ro+Wo-mb-Ro 2 | (* Forbidden: All full memory barriers. *) 3 | { 4 | x = 0; 5 | y = 0; 6 | } 7 | 8 | P0(int *x) 9 | { 10 | WRITE_ONCE(*x, 1); 11 | } 12 | 13 | P1(int *y, int *x) 14 | { 15 | int r1; int r2; 16 | r1 = READ_ONCE(*x); 17 | smp_mb(); 18 | r2 = READ_ONCE(*y); 19 | } 20 | 21 | P2(int *x, int *y) 22 | { 23 | int r3; 24 | WRITE_ONCE(*y, 1); 25 | smp_mb(); 26 | r3 = READ_ONCE(*x); 27 | } 28 | 29 | exists (1:r1 = 1 /\ 1:r2 = 0 /\ 2:r3=0) 30 | -------------------------------------------------------------------------------- /manual/memory_barriers/C-wo+ro-rb-ro+wo-mb-ro.litmus: -------------------------------------------------------------------------------- 1 | C C-Wo+Ro-rb-Ro+Wo-mb-Ro 2 | (* Allowed: rmb not transitive. Also allowed by Power. *) 3 | { 4 | x = 0; 5 | y = 0; 6 | } 7 | 8 | P0(int *x) 9 | { 10 | WRITE_ONCE(*x, 1); 11 | } 12 | 13 | P1(int *y, int *x) 14 | { 15 | int r1; int r2; 16 | r1 = READ_ONCE(*x); 17 | smp_rmb(); 18 | r2 = READ_ONCE(*y); 19 | } 20 | 21 | P2(int *x, int *y) 22 | { 23 | int r3; 24 | WRITE_ONCE(*y, 1); 25 | smp_mb(); 26 | r3 = READ_ONCE(*x); 27 | } 28 | 29 | exists (1:r1 = 1 /\ 1:r2 = 0 /\ 2:r3=0) 30 | -------------------------------------------------------------------------------- /manual/memory_barriers/README: -------------------------------------------------------------------------------- 1 | Harvest Jade Alglave's memory_barriers litmus tests 2 | -------------------------------------------------------------------------------- /manual/memory_barriers/mp+o-wb-o+o-rb_dep-o.litmus: -------------------------------------------------------------------------------- 1 | LISA MP+o-wb-o+o-rb-dep-o 2 | (* Allowed: No actual dependency in P1. *) 3 | { 4 | x = 2; 5 | p = a; 6 | 0:r0=x; 7 | } 8 | P0 | P1 ; 9 | w[once] x 4 | r[once] r1 p ; 10 | f[wmb] | f[rb_dep] ; 11 | w[once] p r0 | r[once] r2 x ; 12 | exists (1:r1 = x /\ 1:r2 = 2) 13 | -------------------------------------------------------------------------------- /manual/oota/TC16.litmus: -------------------------------------------------------------------------------- 1 | LISA TC16 2 | (* 3 | * Result: Never 4 | * 5 | * http://www.cs.umd.edu/~pugh/java/memoryModel/unifiedProposal/testcases.html 6 | * 7 | * Decision: Allowed. 8 | * 9 | * Note: Maybe for Java, but relaxed atomics in C11 prohibit violating 10 | * cache coherence. Adjusted result accordingly. 11 | *) 12 | { 13 | x = 0; 14 | } 15 | P0 | P1 ; 16 | r[once] r1 x | r[once] r2 x ; 17 | w[once] x 1 | w[once] x 2 ; 18 | exists (0:r1=2 /\ 1:r2=1) 19 | 20 | -------------------------------------------------------------------------------- /manual/plain/C-AlanStern.2018.01.11a.litmus: -------------------------------------------------------------------------------- 1 | C AlanStern.2018.01.11a.litmus 2 | 3 | (* Result: Never *) 4 | 5 | {} 6 | 7 | P0(int *x) 8 | { 9 | WRITE_ONCE(*x, 1); 10 | } 11 | 12 | P1(int *x, int *y) 13 | { 14 | int r1; 15 | 16 | r1 = READ_ONCE(*x); 17 | WRITE_ONCE(*x, 2); 18 | smp_store_release(y, 1); 19 | } 20 | 21 | P2(int *x, int *y) 22 | { 23 | int r1; 24 | 25 | r1 = smp_load_acquire(y); 26 | if (r1) 27 | *x = 3; 28 | } 29 | 30 | filter (1:r1=1) 31 | exists (2:r1=1 /\ ~x=3) 32 | -------------------------------------------------------------------------------- /manual/plain/C-LB-rcuderef.litmus: -------------------------------------------------------------------------------- 1 | C C-LB-rcuderef 2 | 3 | (* Result: Never *) 4 | 5 | { 6 | int *x = &a; 7 | } 8 | 9 | P0(int **x, int *y) 10 | { 11 | int *r0; 12 | 13 | r0 = rcu_dereference(*x); 14 | *r0 = 1; 15 | } 16 | 17 | P1(int **x, int *y) 18 | { 19 | int r0; 20 | 21 | r0 = READ_ONCE(*y); 22 | rcu_assign_pointer(*x, y); 23 | } 24 | 25 | exists (0:r0=y /\ 1:r0=1) 26 | -------------------------------------------------------------------------------- /manual/plain/C-LB1.litmus: -------------------------------------------------------------------------------- 1 | C C-LB1 2 | 3 | (* Result: Never *) 4 | 5 | { 6 | int *x = &a; 7 | } 8 | 9 | P0(int **x, int *y) 10 | { 11 | int *r0; 12 | 13 | r0 = rcu_dereference(*x); /* A */ 14 | *r0 = 0; /* C */ 15 | smp_wmb(); 16 | WRITE_ONCE(*y, 1); /* D */ 17 | } 18 | 19 | P1(int **x, int *y, int *b) 20 | { 21 | int r0; 22 | 23 | r0 = READ_ONCE(*y); 24 | rcu_assign_pointer(*x, b); 25 | } 26 | 27 | exists (0:r0=b /\ 1:r0=1) 28 | -------------------------------------------------------------------------------- /manual/plain/C-MP-rcuderef.litmus: -------------------------------------------------------------------------------- 1 | C C-MP-rcuderef 2 | 3 | (* Result: Never *) 4 | 5 | { 6 | int *x = &a; 7 | } 8 | 9 | P0(int **x, int *y) 10 | { 11 | int *r0; 12 | 13 | r0 = rcu_dereference(*x); 14 | r1 = *r0; 15 | } 16 | 17 | P1(int **x, int *y) 18 | { 19 | int r0; 20 | 21 | WRITE_ONCE(*y, 1); 22 | rcu_assign_pointer(*x, y); 23 | } 24 | 25 | exists (0:r0=y /\ 0:r0=0) 26 | -------------------------------------------------------------------------------- /manual/plain/C-MP1.litmus: -------------------------------------------------------------------------------- 1 | C C-MP1 2 | 3 | (* Result: Never *) 4 | 5 | {} 6 | 7 | P0(int *x, int *y) 8 | { 9 | *x = 1; 10 | smp_store_release(y, 1); 11 | } 12 | 13 | P1(int *x, int *y) 14 | { 15 | int r0; 16 | int r1 = -1; 17 | 18 | r0 = smp_load_acquire(y); 19 | if (r0) 20 | r1 = *x; 21 | } 22 | 23 | exists (1:r0=1 /\ 1:r1=0) 24 | -------------------------------------------------------------------------------- /manual/plain/C-OOTA.litmus: -------------------------------------------------------------------------------- 1 | C C-OOTA 2 | 3 | (* 4 | * Result: Sometimes DATARACE 5 | * 6 | * Plain stores can be preceded by use of the stored location as temporary 7 | * storage, which can result in classic out-of-thin-air values. 8 | * Note: Involves data race. 9 | *) 10 | 11 | { 12 | int x = 0; 13 | int y = 0; 14 | } 15 | 16 | P0(int *x, int *y) 17 | { 18 | int r1; 19 | 20 | r1 = *x; 21 | *y = r1; 22 | } 23 | 24 | P1(int *x, int *y) 25 | { 26 | int r1; 27 | 28 | r1 = *y; 29 | *x = r1; 30 | } 31 | 32 | exists 33 | (~0:r1=0 \/ ~1:r1=0) 34 | -------------------------------------------------------------------------------- /manual/plain/C-RR-rcuderef.litmus: -------------------------------------------------------------------------------- 1 | C C-RR-rcuderef 2 | 3 | (* Result: Never *) 4 | 5 | { 6 | int *x = &a; 7 | } 8 | 9 | P0(int **x, int *y) 10 | { 11 | int *r0; 12 | int *r1; 13 | 14 | r0 = rcu_dereference(*x); 15 | r1 = READ_ONCE(*r0); 16 | } 17 | 18 | P1(int **x, int *y) 19 | { 20 | int r0; 21 | 22 | r0 = READ_ONCE(*y); 23 | rcu_assign_pointer(*x, y); 24 | } 25 | 26 | P2(int *y) 27 | { 28 | WRITE_ONCE(*y, 1); 29 | } 30 | 31 | exists (0:r0=y /\ 0:r1=0 /\ 1:r0=1) 32 | -------------------------------------------------------------------------------- /manual/plain/C-RR-rcuderef1.litmus: -------------------------------------------------------------------------------- 1 | C C-RR-rcuderef 2 | 3 | (* Result: Never DATARACE *) 4 | 5 | { 6 | int *x = &a; 7 | } 8 | 9 | P0(int **x, int *y) 10 | { 11 | int *r0; 12 | int *r1; 13 | 14 | r0 = rcu_dereference(*x); 15 | r1 = *r0; 16 | } 17 | 18 | P1(int **x, int *y) 19 | { 20 | int r0; 21 | 22 | r0 = READ_ONCE(*y); 23 | rcu_assign_pointer(*x, y); 24 | } 25 | 26 | P2(int *y) 27 | { 28 | WRITE_ONCE(*y, 1); 29 | } 30 | 31 | exists (0:r0=y /\ 0:r1=0 /\ 1:r0=1) 32 | -------------------------------------------------------------------------------- /manual/plain/C-RRDR-rcuderef.litmus: -------------------------------------------------------------------------------- 1 | C C-RRDR-rcuderef 2 | 3 | (* Result: Never DATARACE *) 4 | 5 | { 6 | int *x = &a; 7 | } 8 | 9 | P0(int **x, int *y) 10 | { 11 | int *r0; 12 | int *r1; 13 | 14 | r0 = rcu_dereference(*x); 15 | r1 = *r0; 16 | } 17 | 18 | P1(int **x, int *y) 19 | { 20 | int r0; 21 | 22 | r0 = *y; 23 | rcu_assign_pointer(*x, y); 24 | } 25 | 26 | P2(int *y) 27 | { 28 | WRITE_ONCE(*y, 1); 29 | } 30 | 31 | exists (0:r0=y /\ 0:r1=0 /\ 1:r0=1) 32 | -------------------------------------------------------------------------------- /manual/plain/C-S+o-mb-o+o-ctl-p.litmus: -------------------------------------------------------------------------------- 1 | C S+o-mb-o+o-ctl-p 2 | 3 | (* 4 | * Result: Never DATARACE 5 | * 6 | * Demonstrate compiler write-to-read transformation for plain write. 7 | *) 8 | 9 | { 10 | } 11 | 12 | P0(int *x, int *z) 13 | { 14 | WRITE_ONCE(*z, 1); 15 | smp_mb(); 16 | WRITE_ONCE(*x, 1); 17 | } 18 | 19 | P1(int *x, int *z) 20 | { 21 | int r1; 22 | 23 | r1 = READ_ONCE(*x); 24 | if (r1 == 1) 25 | *z = 0; 26 | } 27 | 28 | exists (1:r1=1 /\ z=1) 29 | -------------------------------------------------------------------------------- /manual/plain/C-S-rcuderef.litmus: -------------------------------------------------------------------------------- 1 | C C-S-rcuderef 2 | 3 | (* Result: Never *) 4 | 5 | { 6 | int *x = &a; 7 | } 8 | 9 | P0(int **x, int *y) 10 | { 11 | int *r0; 12 | 13 | r0 = rcu_dereference(*x); 14 | *r0 = 2; 15 | } 16 | 17 | P1(int **x, int *y) 18 | { 19 | int r0; 20 | 21 | WRITE_ONCE(*y, 1); 22 | rcu_assign_pointer(*x, y); 23 | } 24 | 25 | exists (0:r0=y /\ (~y=2 \/ a=2)) 26 | -------------------------------------------------------------------------------- /manual/plain/C-S-rcunoderef-1.litmus: -------------------------------------------------------------------------------- 1 | C C-S-rcunoderef-1 2 | 3 | (* Result: Never DATARACE *) 4 | 5 | { 6 | } 7 | 8 | P0(int *a, int *b) 9 | { 10 | *a = 1; 11 | synchronize_rcu(); 12 | *b = 2; 13 | } 14 | 15 | P1(int *a, int *b) 16 | { 17 | int *r1; 18 | 19 | rcu_read_lock(); 20 | r1 = *a; 21 | if (r1 == 0) 22 | *b = 1; 23 | rcu_read_unlock(); 24 | } 25 | 26 | locations [1:r1] 27 | exists (~b=2) 28 | -------------------------------------------------------------------------------- /manual/plain/C-S-rcunoderef-2.litmus: -------------------------------------------------------------------------------- 1 | C C-S-rcunoderef-2 2 | 3 | (* Result: Never *) 4 | 5 | { 6 | } 7 | 8 | P0(int *a, int *b) 9 | { 10 | WRITE_ONCE(*a, 1); 11 | synchronize_rcu(); 12 | *b = 2; 13 | } 14 | 15 | P1(int *a, int *b) 16 | { 17 | int *r1; 18 | 19 | rcu_read_lock(); 20 | r1 = READ_ONCE(*a); 21 | if (r1 == 0) 22 | *b = 1; 23 | rcu_read_unlock(); 24 | } 25 | 26 | locations [1:r1] 27 | exists (~b=2) 28 | -------------------------------------------------------------------------------- /manual/plain/C-S-rcunoderef-3.litmus: -------------------------------------------------------------------------------- 1 | C C-S-rcunoderef-3 2 | 3 | (* Result: Never *) 4 | 5 | { 6 | } 7 | 8 | P0(int *a, int *b) 9 | { 10 | WRITE_ONCE(*a, 1); 11 | synchronize_rcu(); 12 | *b = 2; 13 | } 14 | 15 | P1(int *a, int *b) 16 | { 17 | int *r1; 18 | 19 | rcu_read_lock(); 20 | r1 = READ_ONCE(*a); 21 | if (r1 == 0) 22 | WRITE_ONCE(*b, 1); 23 | rcu_read_unlock(); 24 | } 25 | 26 | locations [1:r1] 27 | exists (~b=2) 28 | -------------------------------------------------------------------------------- /manual/plain/C-S-rcunoderef-4.litmus: -------------------------------------------------------------------------------- 1 | C C-S-rcunoderef-4 2 | 3 | (* Result: Never *) 4 | 5 | { 6 | } 7 | 8 | P0(int *a, int *b) 9 | { 10 | WRITE_ONCE(*a, 1); 11 | synchronize_rcu(); 12 | WRITE_ONCE(*b, 2); 13 | } 14 | 15 | P1(int *a, int *b) 16 | { 17 | int *r1; 18 | 19 | rcu_read_lock(); 20 | r1 = READ_ONCE(*a); 21 | if (r1 == 0) 22 | WRITE_ONCE(*b, 1); 23 | rcu_read_unlock(); 24 | } 25 | 26 | locations [1:r1] 27 | exists (~b=2) 28 | -------------------------------------------------------------------------------- /manual/plain/C-data-race-of-execution.litmus: -------------------------------------------------------------------------------- 1 | C data-race-of-execution 2 | 3 | (* Result: Never DATARACE *) 4 | 5 | {} 6 | 7 | P0(int *x) 8 | { 9 | WRITE_ONCE(*x, 17); 10 | } 11 | 12 | P1(int *x) 13 | { 14 | int r1; 15 | 16 | r1 = *x; 17 | } 18 | 19 | exists (1:r1 = 16) 20 | -------------------------------------------------------------------------------- /manual/plain/C-no-race.litmus: -------------------------------------------------------------------------------- 1 | C C-no-race 2 | 3 | (* Result: Never *) 4 | 5 | { } 6 | 7 | P0(int *x, spinlock_t *s) 8 | { 9 | spin_lock(s); 10 | WRITE_ONCE(*x, 1); 11 | } 12 | 13 | P1(int *x, spinlock_t *s) 14 | { 15 | int r1; 16 | 17 | spin_lock(s); 18 | r1 = *x; 19 | spin_unlock(s); 20 | } 21 | 22 | exists (1:r1=1) 23 | -------------------------------------------------------------------------------- /manual/plain/C-non-race3.litmus: -------------------------------------------------------------------------------- 1 | C C-non-race3 2 | 3 | (* 4 | * Result: Never DATARACE 5 | *) 6 | 7 | { } 8 | 9 | P0(int *x, int *y, int *z) 10 | { 11 | int r0; 12 | 13 | r0 = READ_ONCE(*x); 14 | if (r0 == 1) 15 | *y = 3; 16 | WRITE_ONCE(*y, 5); 17 | smp_wmb(); 18 | WRITE_ONCE(*z, 1); 19 | } 20 | 21 | P1(int *x, int *y, int *z) 22 | { 23 | int r1; 24 | 25 | r1 = READ_ONCE(*z); 26 | WRITE_ONCE(*x, r1); 27 | } 28 | 29 | P2(int *y) 30 | { 31 | *y = 2; 32 | } 33 | 34 | exists (0:r0=1 /\ 1:r1=1) 35 | -------------------------------------------------------------------------------- /manual/plain/C-non-race4.litmus: -------------------------------------------------------------------------------- 1 | C C-non-race4 2 | 3 | (* 4 | * Result: Never 5 | * 6 | * Standard RCU pattern with intervening store to memory, except that 7 | * it is to shared memory rather than a local. 8 | *) 9 | 10 | { 11 | int *x = &a; 12 | } 13 | 14 | P0(int **x, int *b) 15 | { 16 | *b = 1; 17 | smp_store_release(x, b); 18 | } 19 | 20 | P1(int **x, int **tmp) 21 | { 22 | int *r1; 23 | int *r2; 24 | int r3; 25 | 26 | r1 = READ_ONCE(*x); 27 | *tmp = r1; 28 | r2 = *tmp; 29 | r3 = *r2; 30 | } 31 | 32 | exists (1:r1=b /\ 1:r3=0) 33 | -------------------------------------------------------------------------------- /manual/plain/C-propagation-and-write-races.litmus: -------------------------------------------------------------------------------- 1 | C propagation-and-write-races 2 | 3 | (* 4 | * Result: Sometimes DATARACE 5 | * 6 | * Because the cycle is permitted, there is a data race. 7 | *) 8 | 9 | {} 10 | 11 | P0(int *x) 12 | { 13 | WRITE_ONCE(*x, 1); 14 | } 15 | 16 | P1(int *x, int *y) 17 | { 18 | int r1; 19 | 20 | r1 = READ_ONCE(*x); 21 | WRITE_ONCE(*y, r1); 22 | } 23 | 24 | P2(int *x, int *y) 25 | { 26 | int r2; 27 | 28 | r2 = READ_ONCE(*y); 29 | smp_mb(); 30 | *x = 2; 31 | } 32 | 33 | exists (1:r1=1 /\ 2:r2=1 /\ x=1) 34 | -------------------------------------------------------------------------------- /manual/plain/C-repload.litmus: -------------------------------------------------------------------------------- 1 | C C-repload 2 | 3 | (* 4 | * Result: Sometimes DATARACE 5 | * 6 | * Plain loads can be replicated. 7 | *) 8 | 9 | { 10 | int x = 0; 11 | int a = 42; 12 | int b = 42; 13 | } 14 | 15 | P0(int *x) 16 | { 17 | WRITE_ONCE(*x, 1); 18 | } 19 | 20 | P1(int *x, int *a, int *b) 21 | { 22 | int r1; 23 | 24 | r1 = *x; 25 | WRITE_ONCE(*a, r1); 26 | WRITE_ONCE(*b, r1); 27 | } 28 | 29 | exists 30 | (a=0 /\ b=1) 31 | -------------------------------------------------------------------------------- /manual/plain/C-tearload.litmus: -------------------------------------------------------------------------------- 1 | C C-tearload 2 | 3 | (* 4 | * Result: Never DATARACE 5 | * 6 | * Plain loads tear, so that a load from a variable that is being 7 | * concurrently stored to can result in a final value different than any 8 | * of the values stored. 9 | *) 10 | 11 | { 12 | int x = 0; 13 | } 14 | 15 | P0(int *x) 16 | { 17 | WRITE_ONCE(*x, 6); 18 | } 19 | 20 | P1(int *x) 21 | { 22 | WRITE_ONCE(*x, 12); 23 | } 24 | 25 | P2(int *x) 26 | { 27 | int r1; 28 | 29 | r1 = *x; 30 | } 31 | 32 | exists 33 | (~2:r1=0 /\ ~2:r1=6 /\ ~2:r1=12) 34 | -------------------------------------------------------------------------------- /manual/plain/C-tearstore.litmus: -------------------------------------------------------------------------------- 1 | C C-tearstore 2 | 3 | (* 4 | * Result: Sometimes DATARACE 5 | * 6 | * Plain stores tear, so that concurrent stores to the same variable 7 | * result in a final value different than either value stored. 8 | *) 9 | 10 | { 11 | int x = 0; 12 | } 13 | 14 | P0(int *x) 15 | { 16 | *x = 6; 17 | } 18 | 19 | P1(int *x) 20 | { 21 | *x = 12; 22 | } 23 | 24 | exists 25 | (~x=0 /\ ~x=6 /\ ~x=12) 26 | -------------------------------------------------------------------------------- /manual/plain/C-tmpstore.litmus: -------------------------------------------------------------------------------- 1 | C C-tmpstore 2 | 3 | (* 4 | * Result: Sometimes DATARACE 5 | * 6 | * Plain stores can be preceded by use of the stored location as temporary 7 | * storage. 8 | *) 9 | 10 | { 11 | int x = 0; 12 | } 13 | 14 | P0(int *x) 15 | { 16 | *x = 0; 17 | } 18 | 19 | P1(int *x) 20 | { 21 | int r1; 22 | 23 | r1 = READ_ONCE(*x); 24 | } 25 | 26 | exists 27 | (~1:r1=0) 28 | -------------------------------------------------------------------------------- /manual/plain/MP+wmbplainplain+rmbplainplain.litmus: -------------------------------------------------------------------------------- 1 | C MP+wmbplainplain+rmbplainplain 2 | 3 | (* 4 | * Result: Sometimes DATARACE 5 | * 6 | * P0()'s writes can be transformed to reads, and besides there are 7 | * data races all over the place. 8 | *) 9 | 10 | {} 11 | 12 | P0(int *x, int *y) 13 | { 14 | *x = 1; 15 | smp_wmb(); 16 | *y = 1; 17 | } 18 | 19 | P1(int *x, int *y) 20 | { 21 | int r0; 22 | int r1; 23 | 24 | r0 = *y; 25 | smp_rmb(); 26 | r1 = *x; 27 | } 28 | 29 | exists (~1:r0=0 /\ ~1:r1=1) 30 | -------------------------------------------------------------------------------- /manual/rcu/C-rcu-link-after.litmus: -------------------------------------------------------------------------------- 1 | C rcu-link-after 2 | { 3 | } 4 | 5 | P0(int *a) 6 | { 7 | WRITE_ONCE(*a, 1); 8 | } 9 | 10 | P1(int *a, int *b) 11 | { 12 | WRITE_ONCE(*a, 2); 13 | synchronize_rcu(); 14 | WRITE_ONCE(*b, 1); 15 | } 16 | 17 | P2(int *a, int *b, int *c) 18 | { 19 | rcu_read_lock(); 20 | WRITE_ONCE(*b, 2); 21 | WRITE_ONCE(*c, 1); 22 | rcu_read_unlock(); 23 | } 24 | 25 | P3(int *a, int *c) 26 | { 27 | int r1; 28 | int r2; 29 | 30 | r1 = READ_ONCE(*c); 31 | if (r1) 32 | r2 = READ_ONCE(*a); 33 | } 34 | 35 | exists (a=2 /\ b=2 /\ 3:r1=1 /\ 3:r2=0) 36 | -------------------------------------------------------------------------------- /manual/rcu/C-rcu-link-before.litmus: -------------------------------------------------------------------------------- 1 | C rcu-link-before 2 | { 3 | } 4 | 5 | P0(int *a) 6 | { 7 | WRITE_ONCE(*a, 1); 8 | } 9 | 10 | P1(int *a, int *b) 11 | { 12 | rcu_read_lock(); 13 | WRITE_ONCE(*a, 2); 14 | WRITE_ONCE(*b, 1); 15 | rcu_read_unlock(); 16 | } 17 | 18 | P2(int *a, int *b, int *c) 19 | { 20 | WRITE_ONCE(*b, 2); 21 | synchronize_rcu(); 22 | WRITE_ONCE(*c, 1); 23 | } 24 | 25 | P3(int *a, int *c) 26 | { 27 | int r1; 28 | int r2; 29 | 30 | r1 = READ_ONCE(*c); 31 | if (r1) 32 | r2 = READ_ONCE(*a); 33 | } 34 | 35 | exists (a=2 /\ b=2 /\ 3:r1=1 /\ 3:r2=0) 36 | -------------------------------------------------------------------------------- /manual/rcu/LB-GRW+R-Dd+R-Ddpo.litmus: -------------------------------------------------------------------------------- 1 | LISA LB-GRW+R-Dd+R-Ddpo 2 | (* 3 | * Result: Maybe. 4 | * Forbidden by Power, not clear about other weakly ordered systems. 5 | *) 6 | { 7 | 0:r3=x2; x1=y1; 1:r3=v0; x2=y2; 8 | } 9 | P0 | P1 | P2 | P3 ; 10 | r[once] r1 u0 | r[deref] r1 x1 | r[deref] r1 x2 | r[once] r1 v1 ; 11 | w[release] x1 r3 | w[release] r1 r3 | w[once] r1 1 | f[mb] ; 12 | | | w[once] v1 1 | w[once] u0 1 ; 13 | exists 14 | (3:r1=1 /\ 0:r1=1 /\ 1:r1=x2 /\ 2:r1=v0) 15 | -------------------------------------------------------------------------------- /manual/rcu/LB-LRW+R-Od+O-Od+O-Od+O-Od.litmus: -------------------------------------------------------------------------------- 1 | LISA LB-LRW+R-Od+O-Od+O-Od+O-Od 2 | (* 3 | * Result: Never 4 | * 5 | * Not even DEC Alpha speculates writes! 6 | *) 7 | { 8 | 0:r3=x2; x1=y1; 1:r3=x3; x2=y2; 2:r3=x4; x3=y3; 3:r3=u0; x4=y4; 9 | } 10 | P0 | P1 | P2 | P3 | P4 ; 11 | r[once] r1 u0 | r[once] r1 x1 | r[once] r1 x2 | r[once] r1 x3 | r[once] r1 x4 ; 12 | w[release] x1 r3 | w[once] r1 r3 | w[once] r1 r3 | w[once] r1 r3 | w[once] r1 1 ; 13 | exists 14 | (0:r1=1 /\ 1:r1=x2 /\ 2:r1=x3 /\ 3:r1=x4 /\ 4:r1=u0) 15 | -------------------------------------------------------------------------------- /manual/rcu/LISA1R1G.litmus: -------------------------------------------------------------------------------- 1 | LISA LISA1R1G 2 | (* 3 | * Result: Never 4 | * 5 | * Simple RCU case with a single grace period and a single read-side 6 | * critical section. Cycle prohibited. 7 | *) 8 | { 9 | x0 = 0; 10 | x1 = 0; 11 | } 12 | P0 | P1 ; 13 | f[rcu_read_lock] | r[once] r1 x1 ; 14 | w[once] x0 1 | f[sync] ; 15 | w[once] x1 1 | r[once] r2 x0 ; 16 | f[rcu_read_unlock] | ; 17 | exists (1:r1=1 /\ 1:r2=0) 18 | -------------------------------------------------------------------------------- /manual/rcu/LISA1R1Gdeadlock.litmus: -------------------------------------------------------------------------------- 1 | LISA LISA1R1Gdeadlock 2 | (* 3 | * Result: DEADLOCK 4 | * 5 | * Simple self-deadlocking RCU case with a single grace period within a 6 | * single read-side critical section. Syntax error. Only really useful 7 | * for testing the translation script. 8 | *) 9 | { 10 | x0 = 0; 11 | x1 = 0; 12 | } 13 | P0 ; 14 | f[rcu_read_lock] ; 15 | w[once] x0 1 ; 16 | f[sync] ; 17 | w[once] x1 1 ; 18 | f[rcu_read_unlock] ; 19 | exists (x0=1 /\ x1=1) 20 | -------------------------------------------------------------------------------- /manual/rcu/LISA1Rd1G.litmus: -------------------------------------------------------------------------------- 1 | LISA LISA1Rd1G 2 | (* 3 | * Result: Never 4 | * 5 | * Simple RCU case with a single grace period and a single read-side 6 | * critical section, the latter relying on dependency ordering. 7 | * Cycle prohibited. 8 | *) 9 | { 10 | x0 = x1; 11 | x1 = 0; 12 | x2 = 42; 13 | 0:r5=x2; 14 | } 15 | P0 | P1 ; 16 | w[assign] x0 r5 | f[rcu_read_lock] ; 17 | f[sync] | r[deref] r1 x0 ; 18 | w[once] x1 7 | r[once] r2 r1 ; 19 | | f[rcu_read_unlock] ; 20 | locations [1:r1*;] 21 | exists (1:r2=7) 22 | -------------------------------------------------------------------------------- /manual/rcu/LISA3G.litmus: -------------------------------------------------------------------------------- 1 | LISA LISA3G 2 | (* 3 | * Result: Always 4 | * 5 | * Three RCU grace periods with absolutely nothing else. There is no 6 | * cycle to be either prohibited or allowed. This litmus test is therefore 7 | * not particularly interesting except as a test case for the script that 8 | * converts litmus tests to auxiliary-variable form. "Cycle" prohibited. 9 | *) 10 | { 11 | x0 = 0; 12 | x1 = 0; 13 | } 14 | P0 | P1 | P2 ; 15 | f[sync] | f[sync] | f[sync] ; 16 | exists (1:r1=0 /\ 1:r2=0) 17 | -------------------------------------------------------------------------------- /manual/rcu/LISADL1.litmus: -------------------------------------------------------------------------------- 1 | LISA LISADL1 2 | (* 3 | * Result: DEADLOCK 4 | * 5 | * Simple RCU case with a single grace period within an RCU read-side 6 | * critical section. Deadlock case. 7 | *) 8 | { 9 | x0 = 0; 10 | x1 = 0; 11 | } 12 | P0 ; 13 | f[rcu_read_lock] ; 14 | w[once] x0 1 ; 15 | f[sync] ; 16 | w[once] x1 1 ; 17 | f[rcu_read_unlock] ; 18 | r[once] r1 x0 ; 19 | r[once] r2 x1 ; 20 | exists (0:r1=1 \/ 0:r2=1) 21 | -------------------------------------------------------------------------------- /manual/rcu/LISAdep.litmus: -------------------------------------------------------------------------------- 1 | LISA LISAdep 2 | (* 3 | * Result: Never 4 | * 5 | * Dependencies, anyone? 6 | *) 7 | { 8 | x0 = 0; 9 | x1 = x0; 10 | x2 = 0; 11 | 0:r1=x0; 0:r2=x1; 0:r3=x2; 12 | 1:r1=x0; 1:r2=x1; 1:r3=x2; 13 | } 14 | P0 | P1 ; 15 | w[once] x2 1 | r[deref] r1 x1 ; 16 | w[assign] x1 r3 | r[once] r2 r1 ; 17 | exists (1:r1=x2 /\ 1:r2=0) 18 | -------------------------------------------------------------------------------- /manual/rcu/LISAdepRW.litmus: -------------------------------------------------------------------------------- 1 | LISA LISAdepRW 2 | (* 3 | * Result: Never 4 | * 5 | * Reverse dependencies, anyone? 6 | *) 7 | { 8 | x0 = 0; 9 | x1 = x0; 10 | x2 = 0; 11 | 0:r1=x0; 0:r2=x1; 0:r3=x2; 12 | 1:r1=x0; 1:r2=x1; 1:r3=x2; 13 | } 14 | P0 | P1 ; 15 | r[once] r1 x2 | r[deref] r1 x1 ; 16 | w[assign] x1 r3 | w[once] r1 1 ; 17 | exists (0:r1=1 /\ 1:r1=x2) 18 | -------------------------------------------------------------------------------- /manual/rcu/LISAnoDL0.litmus: -------------------------------------------------------------------------------- 1 | LISA LISAnoDL0 2 | (* 3 | * Result: Always 4 | * 5 | * Simple RCU case with a single grace period before an RCU read-side 6 | * critical section. Non-deadlock case. 7 | *) 8 | { 9 | x0 = 0; 10 | x1 = 0; 11 | } 12 | P0 ; 13 | f[sync] ; 14 | f[rcu_read_lock] ; 15 | w[once] x0 1 ; 16 | w[once] x1 1 ; 17 | f[rcu_read_unlock] ; 18 | r[once] r1 x0 ; 19 | r[once] r2 x1 ; 20 | exists (0:r1=1 \/ 0:r2=1) 21 | -------------------------------------------------------------------------------- /manual/rcu/LISAnoDL1.litmus: -------------------------------------------------------------------------------- 1 | LISA LISAnoDL1 2 | (* 3 | * Result: Always 4 | * 5 | * Simple RCU case with a single grace period after an RCU read-side 6 | * critical section. Non-deadlock case. 7 | *) 8 | { 9 | x0 = 0; 10 | x1 = 0; 11 | } 12 | P0 ; 13 | f[rcu_read_lock] ; 14 | w[once] x0 1 ; 15 | w[once] x1 1 ; 16 | f[rcu_read_unlock] ; 17 | f[sync] ; 18 | r[once] r1 x0 ; 19 | r[once] r2 x1 ; 20 | exists (0:r1=1 \/ 0:r2=1) 21 | -------------------------------------------------------------------------------- /manual/rcu/LISAnoDL2.litmus: -------------------------------------------------------------------------------- 1 | LISA LISAnoDL2 2 | (* 3 | * Result: Always 4 | * 5 | * Simple RCU case with a single grace period between an RCU read-side 6 | * critical section. Non-deadlock case. 7 | *) 8 | { 9 | x0 = 0; 10 | x1 = 0; 11 | } 12 | P0 ; 13 | f[rcu_read_lock] ; 14 | w[once] x0 1 ; 15 | w[once] x1 1 ; 16 | f[rcu_read_unlock] ; 17 | f[sync] ; 18 | f[rcu_read_lock] ; 19 | r[once] r1 x0 ; 20 | r[once] r2 x1 ; 21 | f[rcu_read_unlock] ; 22 | exists (0:r1=1 \/ 0:r2=1) 23 | -------------------------------------------------------------------------------- /manual/rcu/rcu-relacq-test.litmus: -------------------------------------------------------------------------------- 1 | LISA cris-crossing read-side critical sections 2 | (* 3 | * Result: Sometimes 4 | *) 5 | { 6 | } 7 | P0 | P1 | P2 ; 8 | f[rcu_read_lock] | r[once] r1 y | r[once] r2 z ; 9 | w[once] x 1 | w[once] z r1 | f[rmb] ; 10 | f[rcu_read_unlock] | | r[once] r3 x ; 11 | f[wmb] | | ; 12 | w[once] y 1 | | ; 13 | exists (1:r1=1 /\ 2:r2=1 /\ 2:r3=0) 14 | -------------------------------------------------------------------------------- /manual/rcu/rcu-relacq1.litmus: -------------------------------------------------------------------------------- 1 | LISA rcu-relacq1 2 | { 3 | } 4 | P0 | P1 | P2 ; 5 | w[once] x 1 | f[rcu_read_lock] | r[once] r0 y ; 6 | | r[once] r0 x | f[rmb] ; 7 | | f[rcu_read_unlock] | r[once] r1 x ; 8 | | f[wmb] | ; 9 | | w[once] y 1 | ; 10 | exists (1:r0=1 /\ 2:r0=1 /\ 2:r1=0) 11 | -------------------------------------------------------------------------------- /manual/rcu/rcu-relacq2.litmus: -------------------------------------------------------------------------------- 1 | LISA rcu-relacq2 2 | "" 3 | { 4 | } 5 | P0 | P1 | P2 ; 6 | r[once] r0 x | w[once] y 2 | w[once] u 1 ; 7 | w[once] y r0 | f[sync] | w[release] x 1 ; 8 | f[rcu_read_lock] | w[once] v 1 | ; 9 | r[once] r1 u | | ; 10 | r[once] r2 v | | ; 11 | f[rcu_read_unlock] | | ; 12 | exists (0:r0=1 /\ 0:r1=0 /\ 0:r2=1 /\ y=2) 13 | -------------------------------------------------------------------------------- /perf/absperf.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | TIMECMD=/usr/bin/time 4 | TESTBASE=${1:-litmus-tests} 5 | TIMEOUT=${2:-15m} 6 | ITER=${3:-10} 7 | 8 | for n in $(seq $ITER) 9 | do 10 | for i in $TESTBASE/absperf/*.litmus 11 | do 12 | echo $i 13 | $TIMECMD timeout $TIMEOUT herd7 -conf linux-kernel.cfg $i 14 | done 15 | done 16 | --------------------------------------------------------------------------------