├── case-studies ├── performance │ ├── bin │ │ └── .gitignore │ ├── equivalence │ │ ├── alloy.sh │ │ ├── memsynth.sh │ │ └── alloy │ │ │ └── model │ │ │ └── wfp.als │ ├── synthesis │ │ ├── alloy.sh │ │ ├── memsynth.sh │ │ └── alloy │ │ │ └── model │ │ │ ├── program.als │ │ │ └── test.als │ ├── verification │ │ ├── herd.sh │ │ ├── alloy.sh │ │ ├── memsynth.sh │ │ └── herd │ │ │ └── tests │ │ │ ├── podwr000.litmus │ │ │ ├── podww000.litmus │ │ │ ├── rfe000.litmus │ │ │ ├── safe358.litmus │ │ │ ├── safe564.litmus │ │ │ ├── lwdwr020.litmus │ │ │ ├── safe036.litmus │ │ │ ├── podrw000.litmus │ │ │ ├── safe011.litmus │ │ │ ├── safe135.litmus │ │ │ ├── podrr000.litmus │ │ │ ├── safe045.litmus │ │ │ ├── safe069.litmus │ │ │ ├── safe113.litmus │ │ │ ├── safe320.litmus │ │ │ ├── safe199.litmus │ │ │ ├── safe248.litmus │ │ │ ├── safe414.litmus │ │ │ ├── bclwdww000.litmus │ │ │ ├── bclwdww019.litmus │ │ │ ├── safe158.litmus │ │ │ ├── safe460.litmus │ │ │ ├── safe522.litmus │ │ │ ├── aclwdrr023.litmus │ │ │ ├── bclwdww013.litmus │ │ │ ├── aclwdrr036.litmus │ │ │ ├── bclwdww027.litmus │ │ │ ├── podwr001.litmus │ │ │ ├── rfi000.litmus │ │ │ ├── posrr002.litmus │ │ │ ├── posrr008.litmus │ │ │ ├── podrwposwr019.litmus │ │ │ ├── aclwsrr007.litmus │ │ │ ├── posrr000.litmus │ │ │ ├── rfe002.litmus │ │ │ ├── rfi002.litmus │ │ │ ├── safe282.litmus │ │ │ ├── podww001.litmus │ │ │ ├── rfe003.litmus │ │ │ ├── rfi001.litmus │ │ │ ├── safe225.litmus │ │ │ ├── safe388.litmus │ │ │ ├── safe544.litmus │ │ │ ├── rfe001.litmus │ │ │ ├── aclwdrr017.litmus │ │ │ ├── safe359.litmus │ │ │ ├── safe565.litmus │ │ │ ├── podrwposwr023.litmus │ │ │ ├── rfe006.litmus │ │ │ ├── safe360.litmus │ │ │ ├── safe562.litmus │ │ │ ├── lwswr002.litmus │ │ │ ├── podrwposwr000.litmus │ │ │ ├── safe503.litmus │ │ │ ├── aclwdrr010.litmus │ │ │ ├── safe053.litmus │ │ │ ├── safe092.litmus │ │ │ ├── safe143.litmus │ │ │ ├── podrwposwr041.litmus │ │ │ ├── safe037.litmus │ │ │ ├── safe180.litmus │ │ │ ├── aclwdrr002.litmus │ │ │ ├── aclwdrr007.litmus │ │ │ ├── safe013.litmus │ │ │ ├── safe038.litmus │ │ │ ├── safe040.litmus │ │ │ ├── safe046.litmus │ │ │ ├── safe072.litmus │ │ │ ├── safe136.litmus │ │ │ ├── podrr006.litmus │ │ │ ├── podrr009.litmus │ │ │ ├── podrw002.litmus │ │ │ ├── posrr010.litmus │ │ │ ├── safe006.litmus │ │ │ ├── safe031.litmus │ │ │ ├── safe043.litmus │ │ │ ├── safe147.litmus │ │ │ ├── safe242.litmus │ │ │ ├── safe245.litmus │ │ │ ├── safe289.litmus │ │ │ ├── safe307.litmus │ │ │ ├── safe326.litmus │ │ │ ├── safe345.litmus │ │ │ ├── podrr003.litmus │ │ │ ├── safe001.litmus │ │ │ ├── safe015.litmus │ │ │ ├── safe021.litmus │ │ │ ├── safe051.litmus │ │ │ ├── safe058.litmus │ │ │ ├── safe065.litmus │ │ │ ├── safe067.litmus │ │ │ ├── safe075.litmus │ │ │ ├── safe077.litmus │ │ │ ├── safe079.litmus │ │ │ ├── safe104.litmus │ │ │ ├── safe109.litmus │ │ │ ├── safe115.litmus │ │ │ ├── safe121.litmus │ │ │ ├── safe131.litmus │ │ │ ├── safe138.litmus │ │ │ ├── safe160.litmus │ │ │ ├── safe315.litmus │ │ │ ├── safe323.litmus │ │ │ ├── safe336.litmus │ │ │ ├── safe339.litmus │ │ │ ├── safe355.litmus │ │ │ ├── safe363.litmus │ │ │ ├── safe365.litmus │ │ │ ├── safe369.litmus │ │ │ ├── safe410.litmus │ │ │ ├── safe416.litmus │ │ │ ├── safe426.litmus │ │ │ ├── safe450.litmus │ │ │ ├── safe485.litmus │ │ │ ├── safe514.litmus │ │ │ ├── safe516.litmus │ │ │ ├── safe519.litmus │ │ │ ├── aclwdrr021.litmus │ │ │ ├── aclwsrr004.litmus │ │ │ ├── rfe004.litmus │ │ │ ├── safe048.litmus │ │ │ ├── safe070.litmus │ │ │ ├── safe084.litmus │ │ │ ├── safe088.litmus │ │ │ ├── safe141.litmus │ │ │ ├── safe154.litmus │ │ │ ├── safe156.litmus │ │ │ ├── safe165.litmus │ │ │ ├── safe167.litmus │ │ │ ├── safe176.litmus │ │ │ ├── safe184.litmus │ │ │ ├── safe191.litmus │ │ │ ├── safe196.litmus │ │ │ ├── safe215.litmus │ │ │ ├── safe262.litmus │ │ │ ├── safe266.litmus │ │ │ ├── safe271.litmus │ │ │ ├── safe277.litmus │ │ │ ├── safe372.litmus │ │ │ ├── safe374.litmus │ │ │ ├── safe377.litmus │ │ │ ├── safe382.litmus │ │ │ ├── safe393.litmus │ │ │ ├── safe396.litmus │ │ │ ├── safe428.litmus │ │ │ ├── safe433.litmus │ │ │ ├── safe437.litmus │ │ │ ├── aclwdrr028.litmus │ │ │ ├── aclwdrr029.litmus │ │ │ ├── aclwdrr033.litmus │ │ │ ├── aclwsrr000.litmus │ │ │ ├── bclwdww007.litmus │ │ │ ├── safe082.litmus │ │ │ ├── safe097.litmus │ │ │ ├── safe163.litmus │ │ │ ├── safe205.litmus │ │ │ ├── safe218.litmus │ │ │ ├── safe252.litmus │ │ │ ├── safe457.litmus │ │ │ ├── safe468.litmus │ │ │ ├── safe470.litmus │ │ │ ├── safe478.litmus │ │ │ ├── safe491.litmus │ │ │ ├── safe497.litmus │ │ │ ├── safe525.litmus │ │ │ ├── safe527.litmus │ │ │ ├── safe531.litmus │ │ │ ├── safe538.litmus │ │ │ ├── safe551.litmus │ │ │ ├── safe554.litmus │ │ │ ├── aclwdrr035.litmus │ │ │ ├── aclwdrr040.litmus │ │ │ ├── aclwdrr042.litmus │ │ │ ├── bclwdww009.litmus │ │ │ ├── bclwdww010.litmus │ │ │ ├── rfe005.litmus │ │ │ ├── safe170.litmus │ │ │ ├── safe172.litmus │ │ │ ├── aclwdrr022.litmus │ │ │ ├── aclwdrr034.litmus │ │ │ ├── aclwdrr039.litmus │ │ │ ├── bclwdww008.litmus │ │ │ ├── safe236.litmus │ │ │ ├── safe238.litmus │ │ │ ├── safe482.litmus │ │ │ ├── safe506.litmus │ │ │ ├── safe508.litmus │ │ │ ├── safe511.litmus │ │ │ ├── bclwdww011.litmus │ │ │ ├── bclwdww012.litmus │ │ │ ├── safe233.litmus │ │ │ ├── posrr004.litmus │ │ │ ├── posrr011.litmus │ │ │ ├── aclwsrr005.litmus │ │ │ ├── podrwposwr029.litmus │ │ │ ├── podrwposwr046.litmus │ │ │ ├── podrwposwr058.litmus │ │ │ ├── safe295.litmus │ │ │ ├── safe280.litmus │ │ │ ├── safe361.litmus │ │ │ ├── posrr001.litmus │ │ │ ├── safe226.litmus │ │ │ ├── safe284.litmus │ │ │ ├── safe362.litmus │ │ │ ├── safe501.litmus │ │ │ ├── safe558.litmus │ │ │ ├── safe228.litmus │ │ │ ├── safe368.litmus │ │ │ ├── safe385.litmus │ │ │ ├── safe389.litmus │ │ │ ├── safe398.litmus │ │ │ ├── safe441.litmus │ │ │ ├── aclwdrr018.litmus │ │ │ ├── safe274.litmus │ │ │ ├── safe400.litmus │ │ │ ├── safe541.litmus │ │ │ ├── safe556.litmus │ │ │ ├── safe566.litmus │ │ │ ├── aclwdrr019.litmus │ │ │ ├── aclwdrr020.litmus │ │ │ ├── safe221.litmus │ │ │ ├── safe297.litmus │ │ │ ├── safe301.litmus │ │ │ ├── safe561.litmus │ │ │ ├── safe563.litmus │ │ │ ├── lwswr001.litmus │ │ │ ├── podrwposwr030.litmus │ │ │ ├── safe039.litmus │ │ │ ├── podrwposwr047.litmus │ │ │ ├── podrwposwr059.litmus │ │ │ ├── safe041.litmus │ │ │ ├── safe062.litmus │ │ │ ├── podrwposwr005.litmus │ │ │ ├── podrwposwr011.litmus │ │ │ ├── podrwposwr015.litmus │ │ │ ├── safe017.litmus │ │ │ ├── safe137.litmus │ │ │ ├── safe151.litmus │ │ │ ├── safe219.litmus │ │ │ ├── safe004.litmus │ │ │ ├── safe027.litmus │ │ │ ├── safe047.litmus │ │ │ ├── safe054.litmus │ │ │ ├── safe055.litmus │ │ │ ├── safe071.litmus │ │ │ ├── safe078.litmus │ │ │ ├── safe086.litmus │ │ │ ├── safe117.litmus │ │ │ ├── safe139.litmus │ │ │ ├── safe223.litmus │ │ │ ├── safe224.litmus │ │ │ ├── safe312.litmus │ │ │ ├── safe331.litmus │ │ │ ├── safe333.litmus │ │ │ ├── safe351.litmus │ │ │ ├── safe504.litmus │ │ │ ├── safe505.litmus │ │ │ ├── aclwdrr000.litmus │ │ │ ├── podrr008.litmus │ │ │ ├── podrw001.litmus │ │ │ ├── posrr007.litmus │ │ │ ├── safe049.litmus │ │ │ ├── safe073.litmus │ │ │ ├── safe090.litmus │ │ │ ├── safe093.litmus │ │ │ ├── safe094.litmus │ │ │ ├── safe101.litmus │ │ │ ├── safe107.litmus │ │ │ ├── safe127.litmus │ │ │ ├── safe144.litmus │ │ │ ├── safe159.litmus │ │ │ ├── safe201.litmus │ │ │ ├── safe227.litmus │ │ │ ├── safe229.litmus │ │ │ ├── safe407.litmus │ │ │ ├── safe421.litmus │ │ │ ├── safe423.litmus │ │ │ ├── safe447.litmus │ │ │ └── aclwdrr011.litmus │ └── README.md ├── repair │ ├── README.md │ └── enumerate.rkt ├── synthesis │ └── README.md └── README.md ├── litmus └── litmus.rkt ├── .gitignore ├── frameworks ├── alglave │ ├── test │ │ ├── x86 │ │ │ └── verify-test.rkt │ │ └── ppc │ │ │ └── verify-test.rkt │ └── framework.rkt └── madorhaim │ ├── framework.rkt │ ├── model.rkt │ └── enumerate.rkt └── memsynth ├── memsynth.rkt ├── name.rkt ├── framework.rkt ├── verify.rkt └── strategy └── strategy.rkt /case-studies/performance/bin/.gitignore: -------------------------------------------------------------------------------- 1 | alloy4.2_2015-02-22 2 | hola-0.2 3 | -------------------------------------------------------------------------------- /litmus/litmus.rkt: -------------------------------------------------------------------------------- 1 | #lang racket 2 | 3 | (require "sigs.rkt" "lang.rkt" "sketch.rkt") 4 | 5 | (provide (all-from-out "sigs.rkt" "lang.rkt" "sketch.rkt")) 6 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | .DS_Store? 3 | ._* 4 | .Spotlight-V100 5 | .Trashes 6 | ehthumbs.db 7 | Thumbs.db 8 | compiled 9 | *~ 10 | #* 11 | *.class 12 | *.jar -------------------------------------------------------------------------------- /case-studies/performance/equivalence/alloy.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -e 3 | 4 | FILE="alloy/equivalence.rkt" 5 | 6 | raco make $FILE 7 | 8 | echo "Comparing with Alloy*..." 9 | racket $FILE 10 | -------------------------------------------------------------------------------- /case-studies/performance/synthesis/alloy.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -e 3 | 4 | FILE="alloy/synthesis.rkt" 5 | 6 | raco make $FILE 7 | 8 | echo "Synthesizing with Alloy*..." 9 | racket $FILE 10 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -e 3 | 4 | TESTS="herd/tests/*.litmus" 5 | 6 | echo "Verifying with Herd..." 7 | time (herd7 -speedcheck fast $TESTS > /dev/null) 8 | -------------------------------------------------------------------------------- /case-studies/performance/equivalence/memsynth.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -e 3 | 4 | FILE="memsynth/equivalence.rkt" 5 | 6 | raco make $FILE 7 | 8 | echo "Comparing with Memsynth..." 9 | racket $FILE 10 | -------------------------------------------------------------------------------- /case-studies/performance/synthesis/memsynth.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -e 3 | 4 | FILE="memsynth/synthesis.rkt" 5 | 6 | raco make $FILE 7 | 8 | echo "Synthesizing with Memsynth..." 9 | racket $FILE 10 | -------------------------------------------------------------------------------- /case-studies/performance/verification/alloy.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -e 3 | 4 | FILE="alloy/verification.rkt" 5 | 6 | raco make $FILE 7 | racket $FILE -c 8 | 9 | echo "Verifying with Alloy..." 10 | time racket $FILE -------------------------------------------------------------------------------- /case-studies/repair/README.md: -------------------------------------------------------------------------------- 1 | ## Repair case study 2 | 3 | This directory contains the framework repair case study. 4 | We use MemSynth to automatically repair a bug in a 5 | paper by [Mador-Haim et al](https://www.cis.upenn.edu/~alur/DAC11.pdf). 6 | 7 | To reproduce the results: 8 | 9 | $ racket repair.rkt 10 | -------------------------------------------------------------------------------- /case-studies/performance/verification/memsynth.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -e 3 | 4 | THIS_DIR=`dirname $BASH_SOURCE` 5 | MEMSYNTH_ROOT="$THIS_DIR/../../../" 6 | FILE="$MEMSYNTH_ROOT/frameworks/alglave/test/ppc/verify-test.rkt" 7 | 8 | raco make $FILE 9 | 10 | echo "Verifying with Memsynth..." 11 | time (racket $FILE > /dev/null) 12 | -------------------------------------------------------------------------------- /case-studies/performance/synthesis/alloy/model/program.als: -------------------------------------------------------------------------------- 1 | module program 2 | 3 | abstract sig Processor {} 4 | 5 | abstract sig Location {} 6 | one sig SyncLoc extends Location {} -- null location used for syncs 7 | sig Loc extends Location {} 8 | 9 | abstract sig MemoryEvent {} 10 | 11 | abstract sig Value {} 12 | one sig V0 extends Value {} 13 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/podwr000.litmus: -------------------------------------------------------------------------------- 1 | PPC podwr000 2 | "Fre PodWR Fre PodWR" 3 | Cycle=Fre PodWR Fre PodWR 4 | Relax=PodWR 5 | Safe=Fre 6 | { 7 | 0:r2=y; 0:r4=x; 8 | 1:r2=x; 1:r4=y; 9 | } 10 | P0 | P1 ; 11 | li r1,1 | li r1,1 ; 12 | stw r1,0(r2) | stw r1,0(r2) ; 13 | lwz r3,0(r4) | lwz r3,0(r4) ; 14 | exists 15 | (0:r3=0 /\ 1:r3=0) 16 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/podww000.litmus: -------------------------------------------------------------------------------- 1 | PPC podww000 2 | "Wse PodWW Wse PodWW" 3 | Cycle=Wse PodWW Wse PodWW 4 | Relax=PodWW 5 | Safe=Wse 6 | { 7 | 0:r2=y; 0:r4=x; 8 | 1:r2=x; 1:r4=y; 9 | } 10 | P0 | P1 ; 11 | li r1,2 | li r1,2 ; 12 | stw r1,0(r2) | stw r1,0(r2) ; 13 | li r3,1 | li r3,1 ; 14 | stw r3,0(r4) | stw r3,0(r4) ; 15 | exists 16 | (x=2 /\ y=2) 17 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/rfe000.litmus: -------------------------------------------------------------------------------- 1 | PPC rfe000 2 | "DpdW Rfe DpdW Rfe" 3 | Cycle=DpdW Rfe DpdW Rfe 4 | Relax=Rfe 5 | Safe=DpdW 6 | { 7 | 0:r2=x; 0:r5=y; 8 | 1:r2=y; 1:r5=x; 9 | } 10 | P0 | P1 ; 11 | lwz r1,0(r2) | lwz r1,0(r2) ; 12 | xor r3,r1,r1 | xor r3,r1,r1 ; 13 | li r4,1 | li r4,1 ; 14 | stwx r4,r3,r5 | stwx r4,r3,r5 ; 15 | exists 16 | (0:r1=1 /\ 1:r1=1) 17 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/safe358.litmus: -------------------------------------------------------------------------------- 1 | PPC safe358 2 | "SyncdWR Fre SyncdWR Fre" 3 | Cycle=SyncdWR Fre SyncdWR Fre 4 | Relax= 5 | Safe=Fre SyncdWR 6 | { 7 | 0:r2=x; 0:r4=y; 8 | 1:r2=y; 1:r4=x; 9 | } 10 | P0 | P1 ; 11 | li r1,1 | li r1,1 ; 12 | stw r1,0(r2) | stw r1,0(r2) ; 13 | sync | sync ; 14 | lwz r3,0(r4) | lwz r3,0(r4) ; 15 | exists 16 | (0:r3=0 /\ 1:r3=0) 17 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/safe564.litmus: -------------------------------------------------------------------------------- 1 | PPC safe564 2 | "Rfe SyncdRW Rfe SyncdRW" 3 | Cycle=Rfe SyncdRW Rfe SyncdRW 4 | Relax= 5 | Safe=ACSyncdRW 6 | { 7 | 0:r2=y; 0:r4=x; 8 | 1:r2=x; 1:r4=y; 9 | } 10 | P0 | P1 ; 11 | lwz r1,0(r2) | lwz r1,0(r2) ; 12 | sync | sync ; 13 | li r3,1 | li r3,1 ; 14 | stw r3,0(r4) | stw r3,0(r4) ; 15 | exists 16 | (0:r1=1 /\ 1:r1=1) 17 | -------------------------------------------------------------------------------- /frameworks/alglave/test/x86/verify-test.rkt: -------------------------------------------------------------------------------- 1 | #lang rosette 2 | 3 | (require "../../models.rkt" 4 | "../../../../litmus/tests/x86.rkt" 5 | "../tests.rkt" 6 | rackunit rackunit/text-ui) 7 | 8 | (define verify-tests 9 | (test-suite 10 | "x86 tests" 11 | #:before (thunk (printf "\n\n-----running x86 tests-----\n")) 12 | (run-verify-tests TSO x86-tests 'x86))) 13 | 14 | (time (run-tests verify-tests)) 15 | -------------------------------------------------------------------------------- /frameworks/alglave/test/ppc/verify-test.rkt: -------------------------------------------------------------------------------- 1 | #lang rosette 2 | 3 | (require "../../models.rkt" 4 | "../../../../litmus/tests/ppc-all.rkt" 5 | "../tests.rkt" 6 | rackunit rackunit/text-ui) 7 | 8 | (define PPC-tests 9 | (test-suite 10 | "PPC tests" 11 | #:before (thunk (printf "\n\n-----running PPC tests-----\n")) 12 | (run-verify-tests PPC all-ppc-tests 'PPCalglave))) 13 | 14 | (time (run-tests PPC-tests)) 15 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/lwdwr020.litmus: -------------------------------------------------------------------------------- 1 | PPC lwdwr020 2 | "Fre LwSyncdWR Fre LwSyncdWR" 3 | Cycle=Fre LwSyncdWR Fre LwSyncdWR 4 | Relax=LwSyncdWR 5 | Safe=Fre 6 | { 7 | 0:r2=y; 0:r4=x; 8 | 1:r2=x; 1:r4=y; 9 | } 10 | P0 | P1 ; 11 | li r1,1 | li r1,1 ; 12 | stw r1,0(r2) | stw r1,0(r2) ; 13 | lwsync | lwsync ; 14 | lwz r3,0(r4) | lwz r3,0(r4) ; 15 | exists 16 | (0:r3=0 /\ 1:r3=0) 17 | -------------------------------------------------------------------------------- /memsynth/memsynth.rkt: -------------------------------------------------------------------------------- 1 | #lang racket 2 | 3 | (require "verify.rkt" "synth.rkt" "equivalent.rkt" "unique.rkt" 4 | "framework.rkt" "log.rkt") 5 | (provide (all-from-out "framework.rkt") 6 | (all-from-out "log.rkt") 7 | allowed? ; verification 8 | synth ; synthesis 9 | equivalent? ; equivalence 10 | disambiguate ; uniqueness 11 | make-unique 12 | ) 13 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/safe036.litmus: -------------------------------------------------------------------------------- 1 | PPC safe036 2 | "SyncdWW Wse SyncdWW Wse" 3 | Cycle=SyncdWW Wse SyncdWW Wse 4 | Relax= 5 | Safe=Wse SyncdWW 6 | { 7 | 0:r2=x; 0:r4=y; 8 | 1:r2=y; 1:r4=x; 9 | } 10 | P0 | P1 ; 11 | li r1,2 | li r1,2 ; 12 | stw r1,0(r2) | stw r1,0(r2) ; 13 | sync | sync ; 14 | li r3,1 | li r3,1 ; 15 | stw r3,0(r4) | stw r3,0(r4) ; 16 | exists 17 | (x=2 /\ y=2) 18 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/podrw000.litmus: -------------------------------------------------------------------------------- 1 | PPC podrw000 2 | "Wse SyncdWW Rfe PodRW" 3 | Cycle=Wse SyncdWW Rfe PodRW 4 | Relax=PodRW 5 | Safe=Wse BCSyncdWW 6 | { 7 | 0:r2=y; 0:r4=x; 8 | 1:r2=x; 1:r4=y; 9 | } 10 | P0 | P1 ; 11 | li r1,2 | lwz r1,0(r2) ; 12 | stw r1,0(r2) | li r3,1 ; 13 | sync | stw r3,0(r4) ; 14 | li r3,1 | ; 15 | stw r3,0(r4) | ; 16 | exists 17 | (y=2 /\ 1:r1=1) 18 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/safe011.litmus: -------------------------------------------------------------------------------- 1 | PPC safe011 2 | "SyncdWW Rfe DpdW Wse" 3 | Cycle=SyncdWW Rfe DpdW Wse 4 | Relax= 5 | Safe=Wse DpdW BCSyncdWW 6 | { 7 | 0:r2=x; 0:r5=y; 8 | 1:r2=y; 1:r4=x; 9 | } 10 | P0 | P1 ; 11 | lwz r1,0(r2) | li r1,2 ; 12 | xor r3,r1,r1 | stw r1,0(r2) ; 13 | li r4,1 | sync ; 14 | stwx r4,r3,r5 | li r3,1 ; 15 | | stw r3,0(r4) ; 16 | exists 17 | (y=2 /\ 0:r1=1) 18 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/safe135.litmus: -------------------------------------------------------------------------------- 1 | PPC safe135 2 | "LwSyncdWW Wse LwSyncdWW Wse" 3 | Cycle=LwSyncdWW Wse LwSyncdWW Wse 4 | Relax= 5 | Safe=Wse LwSyncdWW 6 | { 7 | 0:r2=x; 0:r4=y; 8 | 1:r2=y; 1:r4=x; 9 | } 10 | P0 | P1 ; 11 | li r1,2 | li r1,2 ; 12 | stw r1,0(r2) | stw r1,0(r2) ; 13 | lwsync | lwsync ; 14 | li r3,1 | li r3,1 ; 15 | stw r3,0(r4) | stw r3,0(r4) ; 16 | exists 17 | (x=2 /\ y=2) 18 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/podrr000.litmus: -------------------------------------------------------------------------------- 1 | PPC podrr000 2 | "Fre SyncdWW Rfe PodRR" 3 | Cycle=Fre SyncdWW Rfe PodRR 4 | Relax=PodRR 5 | Safe=Fre BCSyncdWW 6 | { 7 | 0:r2=y; 0:r4=x; 8 | 1:r2=x; 1:r4=y; 9 | } 10 | P0 | P1 ; 11 | li r1,1 | lwz r1,0(r2) ; 12 | stw r1,0(r2) | lwz r3,0(r4) ; 13 | sync | ; 14 | li r3,1 | ; 15 | stw r3,0(r4) | ; 16 | exists 17 | (1:r1=1 /\ 1:r3=0) 18 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/safe045.litmus: -------------------------------------------------------------------------------- 1 | PPC safe045 2 | "LwSyncdWW Wse SyncdWW Wse" 3 | Cycle=LwSyncdWW Wse SyncdWW Wse 4 | Relax= 5 | Safe=Wse SyncdWW LwSyncdWW 6 | { 7 | 0:r2=x; 0:r4=y; 8 | 1:r2=y; 1:r4=x; 9 | } 10 | P0 | P1 ; 11 | li r1,2 | li r1,2 ; 12 | stw r1,0(r2) | stw r1,0(r2) ; 13 | sync | lwsync ; 14 | li r3,1 | li r3,1 ; 15 | stw r3,0(r4) | stw r3,0(r4) ; 16 | exists 17 | (x=2 /\ y=2) 18 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/safe069.litmus: -------------------------------------------------------------------------------- 1 | PPC safe069 2 | "SyncdWR Fre SyncdWW Wse" 3 | Cycle=SyncdWR Fre SyncdWW Wse 4 | Relax= 5 | Safe=Fre Wse SyncdWW SyncdWR 6 | { 7 | 0:r2=x; 0:r4=y; 8 | 1:r2=y; 1:r4=x; 9 | } 10 | P0 | P1 ; 11 | li r1,1 | li r1,2 ; 12 | stw r1,0(r2) | stw r1,0(r2) ; 13 | sync | sync ; 14 | li r3,1 | lwz r3,0(r4) ; 15 | stw r3,0(r4) | ; 16 | exists 17 | (y=2 /\ 1:r3=0) 18 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/safe113.litmus: -------------------------------------------------------------------------------- 1 | PPC safe113 2 | "SyncdWW Rfe SyncdRW Wse" 3 | Cycle=SyncdWW Rfe SyncdRW Wse 4 | Relax= 5 | Safe=Wse SyncdRW BCSyncdWW 6 | { 7 | 0:r2=x; 0:r4=y; 8 | 1:r2=y; 1:r4=x; 9 | } 10 | P0 | P1 ; 11 | lwz r1,0(r2) | li r1,2 ; 12 | sync | stw r1,0(r2) ; 13 | li r3,1 | sync ; 14 | stw r3,0(r4) | li r3,1 ; 15 | | stw r3,0(r4) ; 16 | exists 17 | (y=2 /\ 0:r1=1) 18 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/safe320.litmus: -------------------------------------------------------------------------------- 1 | PPC safe320 2 | "SyncdWW Rfe DpdR Fre" 3 | Cycle=SyncdWW Rfe DpdR Fre 4 | Relax= 5 | Safe=Fre DpdR BCSyncdWW 6 | { 7 | 0:r2=x; 0:r5=y; 8 | 1:r2=y; 1:r4=x; 9 | } 10 | P0 | P1 ; 11 | lwz r1,0(r2) | li r1,1 ; 12 | xor r3,r1,r1 | stw r1,0(r2) ; 13 | lwzx r4,r3,r5 | sync ; 14 | | li r3,1 ; 15 | | stw r3,0(r4) ; 16 | exists 17 | (0:r1=1 /\ 0:r4=0) 18 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/safe199.litmus: -------------------------------------------------------------------------------- 1 | PPC safe199 2 | "SyncdWW Rfe LwSyncdRW Wse" 3 | Cycle=SyncdWW Rfe LwSyncdRW Wse 4 | Relax= 5 | Safe=Wse LwSyncdRW BCSyncdWW 6 | { 7 | 0:r2=x; 0:r4=y; 8 | 1:r2=y; 1:r4=x; 9 | } 10 | P0 | P1 ; 11 | lwz r1,0(r2) | li r1,2 ; 12 | lwsync | stw r1,0(r2) ; 13 | li r3,1 | sync ; 14 | stw r3,0(r4) | li r3,1 ; 15 | | stw r3,0(r4) ; 16 | exists 17 | (y=2 /\ 0:r1=1) 18 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/safe248.litmus: -------------------------------------------------------------------------------- 1 | PPC safe248 2 | "LwSyncdWW Rfe SyncdRW Wse" 3 | Cycle=LwSyncdWW Rfe SyncdRW Wse 4 | Relax= 5 | Safe=Wse LwSyncdWW ACSyncdRW 6 | { 7 | 0:r2=x; 0:r4=y; 8 | 1:r2=y; 1:r4=x; 9 | } 10 | P0 | P1 ; 11 | lwz r1,0(r2) | li r1,2 ; 12 | sync | stw r1,0(r2) ; 13 | li r3,1 | lwsync ; 14 | stw r3,0(r4) | li r3,1 ; 15 | | stw r3,0(r4) ; 16 | exists 17 | (y=2 /\ 0:r1=1) 18 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/safe414.litmus: -------------------------------------------------------------------------------- 1 | PPC safe414 2 | "SyncdWW Rfe SyncdRR Fre" 3 | Cycle=SyncdWW Rfe SyncdRR Fre 4 | Relax= 5 | Safe=Fre SyncdRR BCSyncdWW 6 | { 7 | 0:r2=x; 0:r4=y; 8 | 1:r2=y; 1:r4=x; 9 | } 10 | P0 | P1 ; 11 | lwz r1,0(r2) | li r1,1 ; 12 | sync | stw r1,0(r2) ; 13 | lwz r3,0(r4) | sync ; 14 | | li r3,1 ; 15 | | stw r3,0(r4) ; 16 | exists 17 | (0:r1=1 /\ 0:r3=0) 18 | -------------------------------------------------------------------------------- /case-studies/synthesis/README.md: -------------------------------------------------------------------------------- 1 | ## Synthesis case study 2 | 3 | This directory contains the synthesis case study. 4 | 5 | * The [`ppc`](ppc) directory shows that MemSynth can 6 | [synthesize a memory model for PowerPC](ppc/ppc0.rkt), 7 | and [find ambiguities in that model](ppc/ppc0-unique.rkt). 8 | * The [`x86`](x86) directory shows that MemSynth can 9 | [synthesize a memory model for x86](x86/tso0.rkt), 10 | and [find ambiguities in that model](x86/tso0-unique.rkt). 11 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/bclwdww000.litmus: -------------------------------------------------------------------------------- 1 | PPC bclwdww000 2 | "DpdW Wse LwSyncdWW Rfe" 3 | Cycle=DpdW Wse LwSyncdWW Rfe 4 | Relax=BCLwSyncdWW 5 | Safe=Wse DpdW 6 | { 7 | 0:r2=x; 0:r4=y; 8 | 1:r2=y; 1:r5=x; 9 | } 10 | P0 | P1 ; 11 | li r1,2 | lwz r1,0(r2) ; 12 | stw r1,0(r2) | xor r3,r1,r1 ; 13 | lwsync | li r4,1 ; 14 | li r3,1 | stwx r4,r3,r5 ; 15 | stw r3,0(r4) | ; 16 | exists 17 | (x=2 /\ 1:r1=1) 18 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/bclwdww019.litmus: -------------------------------------------------------------------------------- 1 | PPC bclwdww019 2 | "DpdR Fre LwSyncdWW Rfe" 3 | Cycle=DpdR Fre LwSyncdWW Rfe 4 | Relax=BCLwSyncdWW 5 | Safe=Fre DpdR 6 | { 7 | 0:r2=x; 0:r4=y; 8 | 1:r2=y; 1:r5=x; 9 | } 10 | P0 | P1 ; 11 | li r1,1 | lwz r1,0(r2) ; 12 | stw r1,0(r2) | xor r3,r1,r1 ; 13 | lwsync | lwzx r4,r3,r5 ; 14 | li r3,1 | ; 15 | stw r3,0(r4) | ; 16 | exists 17 | (1:r1=1 /\ 1:r4=0) 18 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/safe158.litmus: -------------------------------------------------------------------------------- 1 | PPC safe158 2 | "SyncdWR Fre LwSyncdWW Wse" 3 | Cycle=SyncdWR Fre LwSyncdWW Wse 4 | Relax= 5 | Safe=Fre Wse SyncdWR LwSyncdWW 6 | { 7 | 0:r2=x; 0:r4=y; 8 | 1:r2=y; 1:r4=x; 9 | } 10 | P0 | P1 ; 11 | li r1,1 | li r1,2 ; 12 | stw r1,0(r2) | stw r1,0(r2) ; 13 | lwsync | sync ; 14 | li r3,1 | lwz r3,0(r4) ; 15 | stw r3,0(r4) | ; 16 | exists 17 | (y=2 /\ 1:r3=0) 18 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/safe460.litmus: -------------------------------------------------------------------------------- 1 | PPC safe460 2 | "SyncdWW Rfe LwSyncdRR Fre" 3 | Cycle=SyncdWW Rfe LwSyncdRR Fre 4 | Relax= 5 | Safe=Fre LwSyncdRR BCSyncdWW 6 | { 7 | 0:r2=x; 0:r4=y; 8 | 1:r2=y; 1:r4=x; 9 | } 10 | P0 | P1 ; 11 | lwz r1,0(r2) | li r1,1 ; 12 | lwsync | stw r1,0(r2) ; 13 | lwz r3,0(r4) | sync ; 14 | | li r3,1 ; 15 | | stw r3,0(r4) ; 16 | exists 17 | (0:r1=1 /\ 0:r3=0) 18 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/safe522.litmus: -------------------------------------------------------------------------------- 1 | PPC safe522 2 | "LwSyncdWW Rfe SyncdRR Fre" 3 | Cycle=LwSyncdWW Rfe SyncdRR Fre 4 | Relax= 5 | Safe=Fre LwSyncdWW ACSyncdRR 6 | { 7 | 0:r2=x; 0:r4=y; 8 | 1:r2=y; 1:r4=x; 9 | } 10 | P0 | P1 ; 11 | lwz r1,0(r2) | li r1,1 ; 12 | sync | stw r1,0(r2) ; 13 | lwz r3,0(r4) | lwsync ; 14 | | li r3,1 ; 15 | | stw r3,0(r4) ; 16 | exists 17 | (0:r1=1 /\ 0:r3=0) 18 | -------------------------------------------------------------------------------- /case-studies/performance/synthesis/alloy/model/test.als: -------------------------------------------------------------------------------- 1 | module test 2 | open program 3 | 4 | sig Test { 5 | Events: set MemoryEvent, 6 | Reads: set MemoryEvent, 7 | Writes: set MemoryEvent, 8 | Syncs: set MemoryEvent, 9 | Lwsyncs: set MemoryEvent, 10 | proc: MemoryEvent->lone Processor, 11 | loc: MemoryEvent->lone Location, 12 | data: MemoryEvent->lone Value, 13 | po: MemoryEvent->set MemoryEvent, 14 | dp: MemoryEvent->set MemoryEvent, 15 | finalValue: Location->lone Value 16 | } 17 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/aclwdrr023.litmus: -------------------------------------------------------------------------------- 1 | PPC aclwdrr023 2 | "Fre SyncdWW Rfe LwSyncdRR" 3 | Cycle=Fre SyncdWW Rfe LwSyncdRR 4 | Relax=ACLwSyncdRR 5 | Safe=Fre SyncdWW 6 | { 7 | 0:r2=y; 0:r4=x; 8 | 1:r2=x; 1:r4=y; 9 | } 10 | P0 | P1 ; 11 | li r1,1 | lwz r1,0(r2) ; 12 | stw r1,0(r2) | lwsync ; 13 | sync | lwz r3,0(r4) ; 14 | li r3,1 | ; 15 | stw r3,0(r4) | ; 16 | exists 17 | (1:r1=1 /\ 1:r3=0) 18 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/bclwdww013.litmus: -------------------------------------------------------------------------------- 1 | PPC bclwdww013 2 | "LwSyncdRW Wse LwSyncdWW Rfe" 3 | Cycle=LwSyncdRW Wse LwSyncdWW Rfe 4 | Relax=BCLwSyncdWW 5 | Safe=Wse LwSyncdRW 6 | { 7 | 0:r2=x; 0:r4=y; 8 | 1:r2=y; 1:r4=x; 9 | } 10 | P0 | P1 ; 11 | li r1,2 | lwz r1,0(r2) ; 12 | stw r1,0(r2) | lwsync ; 13 | lwsync | li r3,1 ; 14 | li r3,1 | stw r3,0(r4) ; 15 | stw r3,0(r4) | ; 16 | exists 17 | (x=2 /\ 1:r1=1) 18 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/aclwdrr036.litmus: -------------------------------------------------------------------------------- 1 | PPC aclwdrr036 2 | "Fre LwSyncdWW Rfe LwSyncdRR" 3 | Cycle=Fre LwSyncdWW Rfe LwSyncdRR 4 | Relax=ACLwSyncdRR 5 | Safe=Fre LwSyncdWW 6 | { 7 | 0:r2=y; 0:r4=x; 8 | 1:r2=x; 1:r4=y; 9 | } 10 | P0 | P1 ; 11 | li r1,1 | lwz r1,0(r2) ; 12 | stw r1,0(r2) | lwsync ; 13 | lwsync | lwz r3,0(r4) ; 14 | li r3,1 | ; 15 | stw r3,0(r4) | ; 16 | exists 17 | (1:r1=1 /\ 1:r3=0) 18 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/bclwdww027.litmus: -------------------------------------------------------------------------------- 1 | PPC bclwdww027 2 | "LwSyncdRR Fre LwSyncdWW Rfe" 3 | Cycle=LwSyncdRR Fre LwSyncdWW Rfe 4 | Relax=BCLwSyncdWW 5 | Safe=Fre LwSyncdRR 6 | { 7 | 0:r2=x; 0:r4=y; 8 | 1:r2=y; 1:r4=x; 9 | } 10 | P0 | P1 ; 11 | li r1,1 | lwz r1,0(r2) ; 12 | stw r1,0(r2) | lwsync ; 13 | lwsync | lwz r3,0(r4) ; 14 | li r3,1 | ; 15 | stw r3,0(r4) | ; 16 | exists 17 | (1:r1=1 /\ 1:r3=0) 18 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/podwr001.litmus: -------------------------------------------------------------------------------- 1 | PPC podwr001 2 | "Fre PodWR Fre PodWR Fre PodWR" 3 | Cycle=Fre PodWR Fre PodWR Fre PodWR 4 | Relax=PodWR 5 | Safe=Fre 6 | { 7 | 0:r2=z; 0:r4=x; 8 | 1:r2=x; 1:r4=y; 9 | 2:r2=y; 2:r4=z; 10 | } 11 | P0 | P1 | P2 ; 12 | li r1,1 | li r1,1 | li r1,1 ; 13 | stw r1,0(r2) | stw r1,0(r2) | stw r1,0(r2) ; 14 | lwz r3,0(r4) | lwz r3,0(r4) | lwz r3,0(r4) ; 15 | exists 16 | (0:r3=0 /\ 1:r3=0 /\ 2:r3=0) 17 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/rfi000.litmus: -------------------------------------------------------------------------------- 1 | PPC rfi000 2 | "DpdR Fre Rfi DpdR Fre Rfi" 3 | Cycle=DpdR Fre Rfi DpdR Fre Rfi 4 | Relax=Rfi 5 | Safe=Fre DpdR 6 | { 7 | 0:r2=x; 0:r6=y; 8 | 1:r2=y; 1:r6=x; 9 | } 10 | P0 | P1 ; 11 | li r1,1 | li r1,1 ; 12 | stw r1,0(r2) | stw r1,0(r2) ; 13 | lwz r3,0(r2) | lwz r3,0(r2) ; 14 | xor r4,r3,r3 | xor r4,r3,r3 ; 15 | lwzx r5,r4,r6 | lwzx r5,r4,r6 ; 16 | exists 17 | (0:r3=1 /\ 0:r5=0 /\ 1:r3=1 /\ 1:r5=0) 18 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/posrr002.litmus: -------------------------------------------------------------------------------- 1 | PPC posrr002 2 | "Fre SyncdWW Rfe DpdR PosRR" 3 | Cycle=Fre SyncdWW Rfe DpdR PosRR 4 | Relax=PosRR 5 | Safe=Fre DpdR BCSyncdWW 6 | { 7 | 0:r2=y; 0:r4=x; 8 | 1:r2=x; 1:r5=y; 9 | } 10 | P0 | P1 ; 11 | li r1,1 | lwz r1,0(r2) ; 12 | stw r1,0(r2) | xor r3,r1,r1 ; 13 | sync | lwzx r4,r3,r5 ; 14 | li r3,1 | lwz r6,0(r5) ; 15 | stw r3,0(r4) | ; 16 | exists 17 | (1:r1=1 /\ 1:r4=0 /\ 1:r6=0) 18 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/posrr008.litmus: -------------------------------------------------------------------------------- 1 | PPC posrr008 2 | "DpdR Fre SyncdWW Rfe PosRR" 3 | Cycle=DpdR Fre SyncdWW Rfe PosRR 4 | Relax=PosRR 5 | Safe=Fre DpdR BCSyncdWW 6 | { 7 | 0:r2=x; 0:r4=y; 8 | 1:r2=y; 1:r6=x; 9 | } 10 | P0 | P1 ; 11 | li r1,1 | lwz r1,0(r2) ; 12 | stw r1,0(r2) | lwz r3,0(r2) ; 13 | sync | xor r4,r3,r3 ; 14 | li r3,1 | lwzx r5,r4,r6 ; 15 | stw r3,0(r4) | ; 16 | exists 17 | (1:r1=1 /\ 1:r3=1 /\ 1:r5=0) 18 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/podrwposwr019.litmus: -------------------------------------------------------------------------------- 1 | PPC podrwposwr019 2 | "Fre SyncdWW Rfe PodRW PosWR" 3 | Cycle=Fre SyncdWW Rfe PodRW PosWR 4 | Relax=[PodRW,PosWR] 5 | Safe=Fre BCSyncdWW 6 | { 7 | 0:r2=y; 0:r4=x; 8 | 1:r2=x; 1:r4=y; 9 | } 10 | P0 | P1 ; 11 | li r1,2 | lwz r1,0(r2) ; 12 | stw r1,0(r2) | li r3,1 ; 13 | sync | stw r3,0(r4) ; 14 | li r3,1 | lwz r5,0(r4) ; 15 | stw r3,0(r4) | ; 16 | exists 17 | (y=2 /\ 1:r1=1 /\ 1:r5=1) 18 | -------------------------------------------------------------------------------- /frameworks/madorhaim/framework.rkt: -------------------------------------------------------------------------------- 1 | #lang racket 2 | 3 | (require "../../memsynth/memsynth.rkt" "axioms.rkt" "execution.rkt" "model.rkt") 4 | (provide mador-haim (all-from-out "../../memsynth/memsynth.rkt")) 5 | 6 | (struct mador-haim-framework () 7 | #:methods gen:memsynth-framework 8 | [(define (instantiate-execution f test) 9 | (make-execution test)) 10 | (define (allow f M) 11 | (match-define (memory-model _ F) M) 12 | (Allowed hb rf F))]) 13 | 14 | (define mador-haim (mador-haim-framework)) 15 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/aclwsrr007.litmus: -------------------------------------------------------------------------------- 1 | PPC aclwsrr007 2 | "DpdR Fre SyncdWW Rfe LwSyncsRR" 3 | Cycle=DpdR Fre SyncdWW Rfe LwSyncsRR 4 | Relax=ACLwSyncsRR 5 | Safe=Fre SyncdWW DpdR 6 | { 7 | 0:r2=x; 0:r4=y; 8 | 1:r2=y; 1:r6=x; 9 | } 10 | P0 | P1 ; 11 | li r1,1 | lwz r1,0(r2) ; 12 | stw r1,0(r2) | lwsync ; 13 | sync | lwz r3,0(r2) ; 14 | li r3,1 | xor r4,r3,r3 ; 15 | stw r3,0(r4) | lwzx r5,r4,r6 ; 16 | exists 17 | (1:r1=1 /\ 1:r3=1 /\ 1:r5=0) 18 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/posrr000.litmus: -------------------------------------------------------------------------------- 1 | PPC posrr000 2 | "Fre SyncdWW Rfe PosRR DpdR PosRR" 3 | Cycle=Fre SyncdWW Rfe PosRR DpdR PosRR 4 | Relax=PosRR 5 | Safe=Fre DpdR BCSyncdWW 6 | { 7 | 0:r2=y; 0:r4=x; 8 | 1:r2=x; 1:r6=y; 9 | } 10 | P0 | P1 ; 11 | li r1,1 | lwz r1,0(r2) ; 12 | stw r1,0(r2) | lwz r3,0(r2) ; 13 | sync | xor r4,r3,r3 ; 14 | li r3,1 | lwzx r5,r4,r6 ; 15 | stw r3,0(r4) | lwz r7,0(r6) ; 16 | exists 17 | (1:r1=1 /\ 1:r3=1 /\ 1:r5=0 /\ 1:r7=0) 18 | -------------------------------------------------------------------------------- /memsynth/name.rkt: -------------------------------------------------------------------------------- 1 | #lang racket 2 | 3 | (require "../litmus/litmus.rkt") 4 | (provide next-name rename-test) 5 | 6 | ; Utilities for generating litmus test names 7 | (define names (make-hash)) 8 | 9 | (define (next-name key) 10 | (define idx (hash-ref names key 0)) 11 | (begin0 12 | (string->symbol (format "~a~a" key idx)) 13 | (hash-set! names key (add1 idx)))) 14 | 15 | (define (rename-test t [key 'T]) 16 | (match-define (litmus-test _ prog post allow) t) 17 | (litmus-test (next-name key) prog post allow)) 18 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/rfe002.litmus: -------------------------------------------------------------------------------- 1 | PPC rfe002 2 | "DpdW Wse Rfe DpdW Rfe" 3 | Cycle=DpdW Wse Rfe DpdW Rfe 4 | Relax=Rfe 5 | Safe=Wse DpdW 6 | { 7 | 0:r2=x; 0:r5=y; 8 | 1:r2=y; 1:r5=x; 9 | 2:r2=x; 10 | } 11 | P0 | P1 | P2 ; 12 | lwz r1,0(r2) | lwz r1,0(r2) | li r1,2 ; 13 | xor r3,r1,r1 | xor r3,r1,r1 | stw r1,0(r2) ; 14 | li r4,1 | li r4,1 | ; 15 | stwx r4,r3,r5 | stwx r4,r3,r5 | ; 16 | exists 17 | (x=2 /\ 0:r1=2 /\ 1:r1=1) 18 | -------------------------------------------------------------------------------- /memsynth/framework.rkt: -------------------------------------------------------------------------------- 1 | #lang racket 2 | 3 | (require racket/generic) 4 | (provide (all-defined-out)) 5 | 6 | ; A MemSynth framework provides two methods: 7 | ; * `instantiate-execution` creates bounds on the variables used to define an 8 | ; execution of the given litmus test 9 | ; * `allow` creates an AST corresponding to the framework's axioms for a given 10 | ; memory model 11 | 12 | (define-generics memsynth-framework 13 | (instantiate-execution memsynth-framework test-bounds) 14 | (allow memsynth-framework model)) 15 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/rfi002.litmus: -------------------------------------------------------------------------------- 1 | PPC rfi002 2 | "DpdW Wse Rfi DpdW Wse Rfi" 3 | Cycle=DpdW Wse Rfi DpdW Wse Rfi 4 | Relax=Rfi 5 | Safe=Wse DpdW 6 | { 7 | 0:r2=x; 0:r6=y; 8 | 1:r2=y; 1:r6=x; 9 | } 10 | P0 | P1 ; 11 | li r1,2 | li r1,2 ; 12 | stw r1,0(r2) | stw r1,0(r2) ; 13 | lwz r3,0(r2) | lwz r3,0(r2) ; 14 | xor r4,r3,r3 | xor r4,r3,r3 ; 15 | li r5,1 | li r5,1 ; 16 | stwx r5,r4,r6 | stwx r5,r4,r6 ; 17 | exists 18 | (x=2 /\ y=2 /\ 0:r3=2 /\ 1:r3=2) 19 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/safe282.litmus: -------------------------------------------------------------------------------- 1 | PPC safe282 2 | "Rfe SyncdRW Rfe SyncdRW Wse" 3 | Cycle=Rfe SyncdRW Rfe SyncdRW Wse 4 | Relax= 5 | Safe=Wse ACSyncdRW 6 | { 7 | 0:r2=y; 0:r4=x; 8 | 1:r2=x; 1:r4=y; 9 | 2:r2=y; 10 | } 11 | P0 | P1 | P2 ; 12 | lwz r1,0(r2) | lwz r1,0(r2) | li r1,2 ; 13 | sync | sync | stw r1,0(r2) ; 14 | li r3,1 | li r3,1 | ; 15 | stw r3,0(r4) | stw r3,0(r4) | ; 16 | exists 17 | (y=2 /\ 0:r1=2 /\ 1:r1=1) 18 | -------------------------------------------------------------------------------- /case-studies/performance/equivalence/alloy/model/wfp.als: -------------------------------------------------------------------------------- 1 | module wfp 2 | open program 3 | 4 | pred WellFormedProgram { 5 | 0 not in Write.data 6 | po in (proc.~proc) 7 | po.po in po 8 | no po & iden 9 | all disj m1, m2: MemoryEvent { proc[m1] = proc[m2] => (m1->m2 in po or m2->m1 in po) } 10 | no dp & iden 11 | dp in po & Read->MemoryEvent 12 | no finalValue 13 | no dp 14 | all l: Location { (no loc.l.proc) or !(one loc.l.proc) } 15 | } 16 | 17 | run { WellFormedProgram and some p: Processor | not (one proc.p) and not (no proc.p) } 18 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/podww001.litmus: -------------------------------------------------------------------------------- 1 | PPC podww001 2 | "Wse PodWW Wse PodWW Wse PodWW" 3 | Cycle=Wse PodWW Wse PodWW Wse PodWW 4 | Relax=PodWW 5 | Safe=Wse 6 | { 7 | 0:r2=z; 0:r4=x; 8 | 1:r2=x; 1:r4=y; 9 | 2:r2=y; 2:r4=z; 10 | } 11 | P0 | P1 | P2 ; 12 | li r1,2 | li r1,2 | li r1,2 ; 13 | stw r1,0(r2) | stw r1,0(r2) | stw r1,0(r2) ; 14 | li r3,1 | li r3,1 | li r3,1 ; 15 | stw r3,0(r4) | stw r3,0(r4) | stw r3,0(r4) ; 16 | exists 17 | (x=2 /\ y=2 /\ z=2) 18 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/rfe003.litmus: -------------------------------------------------------------------------------- 1 | PPC rfe003 2 | "DpdR Fre Rfe DpdW Rfe" 3 | Cycle=DpdR Fre Rfe DpdW Rfe 4 | Relax=Rfe 5 | Safe=Fre DpdW DpdR 6 | { 7 | 0:r2=x; 0:r5=y; 8 | 1:r2=y; 1:r5=x; 9 | 2:r2=x; 10 | } 11 | P0 | P1 | P2 ; 12 | lwz r1,0(r2) | lwz r1,0(r2) | li r1,1 ; 13 | xor r3,r1,r1 | xor r3,r1,r1 | stw r1,0(r2) ; 14 | li r4,1 | lwzx r4,r3,r5 | ; 15 | stwx r4,r3,r5 | | ; 16 | exists 17 | (0:r1=1 /\ 1:r1=1 /\ 1:r4=0) 18 | -------------------------------------------------------------------------------- /frameworks/alglave/framework.rkt: -------------------------------------------------------------------------------- 1 | #lang racket 2 | 3 | (require "../../memsynth/memsynth.rkt" "axioms.rkt" "execution.rkt" "model.rkt") 4 | (provide alglave (all-from-out "../../memsynth/memsynth.rkt")) 5 | 6 | (struct alglave-framework () 7 | #:methods gen:memsynth-framework 8 | [(define (instantiate-execution f test) 9 | (make-execution test)) 10 | (define (allow f M) 11 | (match-define (memory-model _ ppo grf ab llh?) M) 12 | (ValidExecution rf ws ppo grf ab llh?))]) 13 | 14 | (define alglave (alglave-framework)) 15 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/rfi001.litmus: -------------------------------------------------------------------------------- 1 | PPC rfi001 2 | "DpdW Wse Rfi DpdR Fre Rfi" 3 | Cycle=DpdW Wse Rfi DpdR Fre Rfi 4 | Relax=Rfi 5 | Safe=Fre Wse DpdW DpdR 6 | { 7 | 0:r2=x; 0:r6=y; 8 | 1:r2=y; 1:r6=x; 9 | } 10 | P0 | P1 ; 11 | li r1,2 | li r1,1 ; 12 | stw r1,0(r2) | stw r1,0(r2) ; 13 | lwz r3,0(r2) | lwz r3,0(r2) ; 14 | xor r4,r3,r3 | xor r4,r3,r3 ; 15 | lwzx r5,r4,r6 | li r5,1 ; 16 | | stwx r5,r4,r6 ; 17 | exists 18 | (x=2 /\ 0:r3=2 /\ 0:r5=0 /\ 1:r3=1) 19 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/safe225.litmus: -------------------------------------------------------------------------------- 1 | PPC safe225 2 | "SyncdWR Fre Rfe SyncdRW Wse" 3 | Cycle=SyncdWR Fre Rfe SyncdRW Wse 4 | Relax= 5 | Safe=Fre Wse SyncdWR ACSyncdRW 6 | { 7 | 0:r2=x; 0:r4=y; 8 | 1:r2=y; 1:r4=x; 9 | 2:r2=x; 10 | } 11 | P0 | P1 | P2 ; 12 | lwz r1,0(r2) | li r1,2 | li r1,1 ; 13 | sync | stw r1,0(r2) | stw r1,0(r2) ; 14 | li r3,1 | sync | ; 15 | stw r3,0(r4) | lwz r3,0(r4) | ; 16 | exists 17 | (y=2 /\ 0:r1=1 /\ 1:r3=0) 18 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/safe388.litmus: -------------------------------------------------------------------------------- 1 | PPC safe388 2 | "Rfe SyncdRR Fre SyncdWR Fre" 3 | Cycle=Rfe SyncdRR Fre SyncdWR Fre 4 | Relax= 5 | Safe=Fre SyncdWR ACSyncdRR 6 | { 7 | 0:r2=y; 0:r4=x; 8 | 1:r2=x; 1:r4=y; 9 | 2:r2=y; 10 | } 11 | P0 | P1 | P2 ; 12 | lwz r1,0(r2) | li r1,1 | li r1,1 ; 13 | sync | stw r1,0(r2) | stw r1,0(r2) ; 14 | lwz r3,0(r4) | sync | ; 15 | | lwz r3,0(r4) | ; 16 | exists 17 | (0:r1=1 /\ 0:r3=0 /\ 1:r3=0) 18 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/safe544.litmus: -------------------------------------------------------------------------------- 1 | PPC safe544 2 | "Rfe SyncdRW Rfe SyncdRR Fre" 3 | Cycle=Rfe SyncdRW Rfe SyncdRR Fre 4 | Relax= 5 | Safe=Fre ACSyncdRW ACSyncdRR 6 | { 7 | 0:r2=y; 0:r4=x; 8 | 1:r2=x; 1:r4=y; 9 | 2:r2=y; 10 | } 11 | P0 | P1 | P2 ; 12 | lwz r1,0(r2) | lwz r1,0(r2) | li r1,1 ; 13 | sync | sync | stw r1,0(r2) ; 14 | li r3,1 | lwz r3,0(r4) | ; 15 | stw r3,0(r4) | | ; 16 | exists 17 | (0:r1=1 /\ 1:r1=1 /\ 1:r3=0) 18 | -------------------------------------------------------------------------------- /frameworks/madorhaim/model.rkt: -------------------------------------------------------------------------------- 1 | #lang rosette 2 | 3 | (provide (struct-out memory-model) make-model 4 | (rename-out [memory-model-name model-name] 5 | [memory-model-mnr model-mnr])) 6 | 7 | ;; model ---------------------------------------------------------------- 8 | ; a memory model consists of two parts: 9 | ; * a name 10 | ; * a must-not-reorder function 11 | 12 | (struct memory-model (name mnr) #:transparent) 13 | 14 | ; an anonymous model 15 | (define (make-model mnr [name #f]) (memory-model (or name 'anon) mnr)) 16 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/rfe001.litmus: -------------------------------------------------------------------------------- 1 | PPC rfe001 2 | "DpdW Rfe DpdW Rfe DpdW Rfe" 3 | Cycle=DpdW Rfe DpdW Rfe DpdW Rfe 4 | Relax=Rfe 5 | Safe=DpdW 6 | { 7 | 0:r2=x; 0:r5=y; 8 | 1:r2=y; 1:r5=z; 9 | 2:r2=z; 2:r5=x; 10 | } 11 | P0 | P1 | P2 ; 12 | lwz r1,0(r2) | lwz r1,0(r2) | lwz r1,0(r2) ; 13 | xor r3,r1,r1 | xor r3,r1,r1 | xor r3,r1,r1 ; 14 | li r4,1 | li r4,1 | li r4,1 ; 15 | stwx r4,r3,r5 | stwx r4,r3,r5 | stwx r4,r3,r5 ; 16 | exists 17 | (0:r1=1 /\ 1:r1=1 /\ 2:r1=1) 18 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/aclwdrr017.litmus: -------------------------------------------------------------------------------- 1 | PPC aclwdrr017 2 | "Fre SyncdWR Fre Rfe LwSyncdRR" 3 | Cycle=Fre SyncdWR Fre Rfe LwSyncdRR 4 | Relax=ACLwSyncdRR 5 | Safe=Fre SyncdWR 6 | { 7 | 0:r2=y; 0:r4=x; 8 | 1:r2=x; 9 | 2:r2=x; 2:r4=y; 10 | } 11 | P0 | P1 | P2 ; 12 | li r1,1 | li r1,1 | lwz r1,0(r2) ; 13 | stw r1,0(r2) | stw r1,0(r2) | lwsync ; 14 | sync | | lwz r3,0(r4) ; 15 | lwz r3,0(r4) | | ; 16 | exists 17 | (0:r3=0 /\ 2:r1=1 /\ 2:r3=0) 18 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/safe359.litmus: -------------------------------------------------------------------------------- 1 | PPC safe359 2 | "SyncdWR Fre SyncdWR Fre SyncdWR Fre" 3 | Cycle=SyncdWR Fre SyncdWR Fre SyncdWR Fre 4 | Relax= 5 | Safe=Fre SyncdWR 6 | { 7 | 0:r2=x; 0:r4=y; 8 | 1:r2=y; 1:r4=z; 9 | 2:r2=z; 2:r4=x; 10 | } 11 | P0 | P1 | P2 ; 12 | li r1,1 | li r1,1 | li r1,1 ; 13 | stw r1,0(r2) | stw r1,0(r2) | stw r1,0(r2) ; 14 | sync | sync | sync ; 15 | lwz r3,0(r4) | lwz r3,0(r4) | lwz r3,0(r4) ; 16 | exists 17 | (0:r3=0 /\ 1:r3=0 /\ 2:r3=0) 18 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/safe565.litmus: -------------------------------------------------------------------------------- 1 | PPC safe565 2 | "Rfe SyncdRW Rfe SyncdRW Rfe SyncdRW" 3 | Cycle=Rfe SyncdRW Rfe SyncdRW Rfe SyncdRW 4 | Relax= 5 | Safe=ACSyncdRW 6 | { 7 | 0:r2=z; 0:r4=x; 8 | 1:r2=x; 1:r4=y; 9 | 2:r2=y; 2:r4=z; 10 | } 11 | P0 | P1 | P2 ; 12 | lwz r1,0(r2) | lwz r1,0(r2) | lwz r1,0(r2) ; 13 | sync | sync | sync ; 14 | li r3,1 | li r3,1 | li r3,1 ; 15 | stw r3,0(r4) | stw r3,0(r4) | stw r3,0(r4) ; 16 | exists 17 | (0:r1=1 /\ 1:r1=1 /\ 2:r1=1) 18 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/podrwposwr023.litmus: -------------------------------------------------------------------------------- 1 | PPC podrwposwr023 2 | "DpdR Fre SyncdWW Rfe PodRW PosWR" 3 | Cycle=DpdR Fre SyncdWW Rfe PodRW PosWR 4 | Relax=[PodRW,PosWR] 5 | Safe=Fre DpdR BCSyncdWW 6 | { 7 | 0:r2=x; 0:r4=y; 8 | 1:r2=y; 1:r4=z; 1:r8=x; 9 | } 10 | P0 | P1 ; 11 | li r1,1 | lwz r1,0(r2) ; 12 | stw r1,0(r2) | li r3,1 ; 13 | sync | stw r3,0(r4) ; 14 | li r3,1 | lwz r5,0(r4) ; 15 | stw r3,0(r4) | xor r6,r5,r5 ; 16 | | lwzx r7,r6,r8 ; 17 | exists 18 | (1:r1=1 /\ 1:r7=0) 19 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/rfe006.litmus: -------------------------------------------------------------------------------- 1 | PPC rfe006 2 | "DpdR Fre Rfe DpdR Fre Rfe" 3 | Cycle=DpdR Fre Rfe DpdR Fre Rfe 4 | Relax=Rfe 5 | Safe=Fre DpdR 6 | { 7 | 0:r2=x; 0:r5=y; 8 | 1:r2=y; 9 | 2:r2=y; 2:r5=x; 10 | 3:r2=x; 11 | } 12 | P0 | P1 | P2 | P3 ; 13 | lwz r1,0(r2) | li r1,1 | lwz r1,0(r2) | li r1,1 ; 14 | xor r3,r1,r1 | stw r1,0(r2) | xor r3,r1,r1 | stw r1,0(r2) ; 15 | lwzx r4,r3,r5 | | lwzx r4,r3,r5 | ; 16 | exists 17 | (0:r1=1 /\ 0:r4=0 /\ 2:r1=1 /\ 2:r4=0) 18 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/safe360.litmus: -------------------------------------------------------------------------------- 1 | PPC safe360 2 | "SyncsWR Fre SyncdWR Fre SyncdWR Fre" 3 | Cycle=SyncsWR Fre SyncdWR Fre SyncdWR Fre 4 | Relax= 5 | Safe=Fre SyncsWR SyncdWR 6 | { 7 | 0:r2=y; 0:r4=x; 8 | 1:r2=x; 1:r4=y; 9 | 2:r2=y; 10 | } 11 | P0 | P1 | P2 ; 12 | li r1,2 | li r1,1 | li r1,1 ; 13 | stw r1,0(r2) | stw r1,0(r2) | stw r1,0(r2) ; 14 | sync | sync | sync ; 15 | lwz r3,0(r4) | lwz r3,0(r4) | lwz r3,0(r2) ; 16 | exists 17 | (y=2 /\ 0:r3=0 /\ 1:r3=0 /\ 2:r3=1) 18 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/safe562.litmus: -------------------------------------------------------------------------------- 1 | PPC safe562 2 | "Rfe SyncdRW Rfe SyncdRW Rfe SyncsRW" 3 | Cycle=Rfe SyncdRW Rfe SyncdRW Rfe SyncsRW 4 | Relax= 5 | Safe=ACSyncsRW ACSyncdRW 6 | { 7 | 0:r2=y; 0:r4=x; 8 | 1:r2=x; 1:r4=y; 9 | 2:r2=y; 10 | } 11 | P0 | P1 | P2 ; 12 | lwz r1,0(r2) | lwz r1,0(r2) | lwz r1,0(r2) ; 13 | sync | sync | sync ; 14 | li r3,1 | li r3,1 | li r3,2 ; 15 | stw r3,0(r4) | stw r3,0(r4) | stw r3,0(r2) ; 16 | exists 17 | (y=2 /\ 0:r1=2 /\ 1:r1=1 /\ 2:r1=1) 18 | -------------------------------------------------------------------------------- /case-studies/README.md: -------------------------------------------------------------------------------- 1 | ## Case studies 2 | 3 | This directory contains three case studies that mirror the 4 | three research questions in [the paper](http://memsynth.uwplse.org/memsynth-pldi17.pdf)'s main evaluation: 5 | 6 | * Can MemSynth scale to real-world memory models such as PowerPC and x86?
7 | ([`synthesis`](synthesis)) 8 | * Does MemSynth provide a basis for rapidly building useful automated memory model tools?
9 | ([`repair`](repair)) 10 | * Does MemSynth outperform existing relational solvers and memory model tools?
11 | ([`performance`](performance)) -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/lwswr002.litmus: -------------------------------------------------------------------------------- 1 | PPC lwswr002 2 | "DpdR Fre LwSyncsWR DpdR Fre LwSyncsWR" 3 | Cycle=DpdR Fre LwSyncsWR DpdR Fre LwSyncsWR 4 | Relax=LwSyncsWR 5 | Safe=Fre DpdR 6 | { 7 | 0:r2=x; 0:r6=y; 8 | 1:r2=y; 1:r6=x; 9 | } 10 | P0 | P1 ; 11 | li r1,1 | li r1,1 ; 12 | stw r1,0(r2) | stw r1,0(r2) ; 13 | lwsync | lwsync ; 14 | lwz r3,0(r2) | lwz r3,0(r2) ; 15 | xor r4,r3,r3 | xor r4,r3,r3 ; 16 | lwzx r5,r4,r6 | lwzx r5,r4,r6 ; 17 | exists 18 | (0:r3=1 /\ 0:r5=0 /\ 1:r3=1 /\ 1:r5=0) 19 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/podrwposwr000.litmus: -------------------------------------------------------------------------------- 1 | PPC podrwposwr000 2 | "Fre SyncdWW Rfe DpdR PodRW PosWR" 3 | Cycle=Fre SyncdWW Rfe DpdR PodRW PosWR 4 | Relax=[PodRW,PosWR] 5 | Safe=Fre DpdR BCSyncdWW 6 | { 7 | 0:r2=z; 0:r4=x; 8 | 1:r2=x; 1:r5=y; 1:r7=z; 9 | } 10 | P0 | P1 ; 11 | li r1,2 | lwz r1,0(r2) ; 12 | stw r1,0(r2) | xor r3,r1,r1 ; 13 | sync | lwzx r4,r3,r5 ; 14 | li r3,1 | li r6,1 ; 15 | stw r3,0(r4) | stw r6,0(r7) ; 16 | | lwz r8,0(r7) ; 17 | exists 18 | (z=2 /\ 1:r1=1 /\ 1:r8=1) 19 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/safe503.litmus: -------------------------------------------------------------------------------- 1 | PPC safe503 2 | "Rfe SyncdRR Fre Rfe SyncdRR Fre" 3 | Cycle=Rfe SyncdRR Fre Rfe SyncdRR Fre 4 | Relax= 5 | Safe=Fre ACSyncdRR 6 | { 7 | 0:r2=y; 0:r4=x; 8 | 1:r2=x; 9 | 2:r2=x; 2:r4=y; 10 | 3:r2=y; 11 | } 12 | P0 | P1 | P2 | P3 ; 13 | lwz r1,0(r2) | li r1,1 | lwz r1,0(r2) | li r1,1 ; 14 | sync | stw r1,0(r2) | sync | stw r1,0(r2) ; 15 | lwz r3,0(r4) | | lwz r3,0(r4) | ; 16 | exists 17 | (0:r1=1 /\ 0:r3=0 /\ 2:r1=1 /\ 2:r3=0) 18 | -------------------------------------------------------------------------------- /frameworks/madorhaim/enumerate.rkt: -------------------------------------------------------------------------------- 1 | #lang rosette 2 | 3 | (require "framework.rkt" "mnr.rkt") 4 | 5 | (provide enumerate) 6 | 7 | ; Enumerate over all model numbers that satisfy the given predicate, and return 8 | ; the outcomes for each test 9 | (define (enumerate tests [pred? (const #t)]) 10 | (for/fold ([ret (hash)]) ([i 4445] #:when (and (valid-model-number? i) (pred? i))) 11 | (define M (model-number->model i)) 12 | (define all-results (for/list ([T tests]) (allowed? mador-haim T M))) 13 | (hash-set ret all-results (append (hash-ref ret all-results '()) (list i))))) 14 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/aclwdrr010.litmus: -------------------------------------------------------------------------------- 1 | PPC aclwdrr010 2 | "Fre Rfe LwSyncdRR Fre Rfe LwSyncdRR" 3 | Cycle=Fre Rfe LwSyncdRR Fre Rfe LwSyncdRR 4 | Relax=ACLwSyncdRR 5 | Safe=Fre 6 | { 7 | 0:r2=y; 0:r4=x; 8 | 1:r2=x; 9 | 2:r2=x; 2:r4=y; 10 | 3:r2=y; 11 | } 12 | P0 | P1 | P2 | P3 ; 13 | lwz r1,0(r2) | li r1,1 | lwz r1,0(r2) | li r1,1 ; 14 | lwsync | stw r1,0(r2) | lwsync | stw r1,0(r2) ; 15 | lwz r3,0(r4) | | lwz r3,0(r4) | ; 16 | exists 17 | (0:r1=1 /\ 0:r3=0 /\ 2:r1=1 /\ 2:r3=0) 18 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/safe053.litmus: -------------------------------------------------------------------------------- 1 | PPC safe053 2 | "Rfe SyncdRW Wse SyncdWW Wse" 3 | Cycle=Rfe SyncdRW Wse SyncdWW Wse 4 | Relax= 5 | Safe=Wse SyncdWW ACSyncdRW 6 | { 7 | 0:r2=y; 0:r4=x; 8 | 1:r2=x; 1:r4=y; 9 | 2:r2=y; 10 | } 11 | P0 | P1 | P2 ; 12 | lwz r1,0(r2) | li r1,2 | li r1,2 ; 13 | sync | stw r1,0(r2) | stw r1,0(r2) ; 14 | li r3,1 | sync | ; 15 | stw r3,0(r4) | li r3,1 | ; 16 | | stw r3,0(r4) | ; 17 | exists 18 | (x=2 /\ y=2 /\ 0:r1=2) 19 | -------------------------------------------------------------------------------- /memsynth/verify.rkt: -------------------------------------------------------------------------------- 1 | #lang racket 2 | 3 | (require "framework.rkt" "../litmus/litmus.rkt" 4 | (only-in ocelot interpret bounds-union) 5 | (only-in rosette solve assert sat?)) 6 | 7 | (provide allowed?) 8 | 9 | ; is test T allowed by model M? 10 | (define (allowed? f T M) 11 | (define bTest (instantiate-test T)) 12 | (define bExec (instantiate-execution f bTest)) 13 | 14 | (define Allow (allow f M)) 15 | (define Allow* (interpret Allow (bounds-union bTest bExec))) 16 | 17 | (match Allow* 18 | [#t #t] 19 | [#f #f] 20 | [_ (sat? (solve (assert Allow*)))])) 21 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/safe092.litmus: -------------------------------------------------------------------------------- 1 | PPC safe092 2 | "Rfe SyncdRR Fre SyncdWW Wse" 3 | Cycle=Rfe SyncdRR Fre SyncdWW Wse 4 | Relax= 5 | Safe=Fre Wse SyncdWW ACSyncdRR 6 | { 7 | 0:r2=y; 0:r4=x; 8 | 1:r2=x; 1:r4=y; 9 | 2:r2=y; 10 | } 11 | P0 | P1 | P2 ; 12 | lwz r1,0(r2) | li r1,1 | li r1,2 ; 13 | sync | stw r1,0(r2) | stw r1,0(r2) ; 14 | lwz r3,0(r4) | sync | ; 15 | | li r3,1 | ; 16 | | stw r3,0(r4) | ; 17 | exists 18 | (y=2 /\ 0:r1=2 /\ 0:r3=0) 19 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/safe143.litmus: -------------------------------------------------------------------------------- 1 | PPC safe143 2 | "Rfe SyncdRW Wse LwSyncdWW Wse" 3 | Cycle=Rfe SyncdRW Wse LwSyncdWW Wse 4 | Relax= 5 | Safe=Wse LwSyncdWW ACSyncdRW 6 | { 7 | 0:r2=y; 0:r4=x; 8 | 1:r2=x; 1:r4=y; 9 | 2:r2=y; 10 | } 11 | P0 | P1 | P2 ; 12 | lwz r1,0(r2) | li r1,2 | li r1,2 ; 13 | sync | stw r1,0(r2) | stw r1,0(r2) ; 14 | li r3,1 | lwsync | ; 15 | stw r3,0(r4) | li r3,1 | ; 16 | | stw r3,0(r4) | ; 17 | exists 18 | (x=2 /\ y=2 /\ 0:r1=2) 19 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/podrwposwr041.litmus: -------------------------------------------------------------------------------- 1 | PPC podrwposwr041 2 | "DpdW Wse SyncdWW Rfe PodRW PosWR" 3 | Cycle=DpdW Wse SyncdWW Rfe PodRW PosWR 4 | Relax=[PodRW,PosWR] 5 | Safe=Wse DpdW BCSyncdWW 6 | { 7 | 0:r2=x; 0:r4=y; 8 | 1:r2=y; 1:r4=z; 1:r8=x; 9 | } 10 | P0 | P1 ; 11 | li r1,2 | lwz r1,0(r2) ; 12 | stw r1,0(r2) | li r3,1 ; 13 | sync | stw r3,0(r4) ; 14 | li r3,1 | lwz r5,0(r4) ; 15 | stw r3,0(r4) | xor r6,r5,r5 ; 16 | | li r7,1 ; 17 | | stwx r7,r6,r8 ; 18 | exists 19 | (x=2 /\ 1:r1=1) 20 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/safe037.litmus: -------------------------------------------------------------------------------- 1 | PPC safe037 2 | "SyncdWW Wse SyncdWW Wse SyncdWW Wse" 3 | Cycle=SyncdWW Wse SyncdWW Wse SyncdWW Wse 4 | Relax= 5 | Safe=Wse SyncdWW 6 | { 7 | 0:r2=x; 0:r4=y; 8 | 1:r2=y; 1:r4=z; 9 | 2:r2=z; 2:r4=x; 10 | } 11 | P0 | P1 | P2 ; 12 | li r1,2 | li r1,2 | li r1,2 ; 13 | stw r1,0(r2) | stw r1,0(r2) | stw r1,0(r2) ; 14 | sync | sync | sync ; 15 | li r3,1 | li r3,1 | li r3,1 ; 16 | stw r3,0(r4) | stw r3,0(r4) | stw r3,0(r4) ; 17 | exists 18 | (x=2 /\ y=2 /\ z=2) 19 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/safe180.litmus: -------------------------------------------------------------------------------- 1 | PPC safe180 2 | "Rfe SyncdRR Fre LwSyncdWW Wse" 3 | Cycle=Rfe SyncdRR Fre LwSyncdWW Wse 4 | Relax= 5 | Safe=Fre Wse LwSyncdWW ACSyncdRR 6 | { 7 | 0:r2=y; 0:r4=x; 8 | 1:r2=x; 1:r4=y; 9 | 2:r2=y; 10 | } 11 | P0 | P1 | P2 ; 12 | lwz r1,0(r2) | li r1,1 | li r1,2 ; 13 | sync | stw r1,0(r2) | stw r1,0(r2) ; 14 | lwz r3,0(r4) | lwsync | ; 15 | | li r3,1 | ; 16 | | stw r3,0(r4) | ; 17 | exists 18 | (y=2 /\ 0:r1=2 /\ 0:r3=0) 19 | -------------------------------------------------------------------------------- /case-studies/performance/README.md: -------------------------------------------------------------------------------- 1 | ## Performance case study 2 | 3 | This directory contains case studies that compare MemSynth's performance 4 | to existing tools on [verification](verification), 5 | [equivalence](equivalence), 6 | and [synthesis](synthesis) queries. 7 | 8 | ### Requirements 9 | 10 | Alloy experiments require a Java JDK (to access `javac`). 11 | 12 | Herd experiments require [`herdtools`](http://diy.inria.fr), 13 | which can be installed via OPAM: 14 | 15 | opam install herdtools7 16 | 17 | Plotting the graph for the [equivalence](equivalence) experiment 18 | requires Python and matplotlib. -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/aclwdrr002.litmus: -------------------------------------------------------------------------------- 1 | PPC aclwdrr002 2 | "Fre SyncdWW Wse Rfe LwSyncdRR" 3 | Cycle=Fre SyncdWW Wse Rfe LwSyncdRR 4 | Relax=ACLwSyncdRR 5 | Safe=Fre Wse SyncdWW 6 | { 7 | 0:r2=y; 0:r4=x; 8 | 1:r2=x; 9 | 2:r2=x; 2:r4=y; 10 | } 11 | P0 | P1 | P2 ; 12 | li r1,1 | li r1,2 | lwz r1,0(r2) ; 13 | stw r1,0(r2) | stw r1,0(r2) | lwsync ; 14 | sync | | lwz r3,0(r4) ; 15 | li r3,1 | | ; 16 | stw r3,0(r4) | | ; 17 | exists 18 | (x=2 /\ 2:r1=2 /\ 2:r3=0) 19 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/aclwdrr007.litmus: -------------------------------------------------------------------------------- 1 | PPC aclwdrr007 2 | "Fre LwSyncdWW Wse Rfe LwSyncdRR" 3 | Cycle=Fre LwSyncdWW Wse Rfe LwSyncdRR 4 | Relax=ACLwSyncdRR 5 | Safe=Fre Wse LwSyncdWW 6 | { 7 | 0:r2=y; 0:r4=x; 8 | 1:r2=x; 9 | 2:r2=x; 2:r4=y; 10 | } 11 | P0 | P1 | P2 ; 12 | li r1,1 | li r1,2 | lwz r1,0(r2) ; 13 | stw r1,0(r2) | stw r1,0(r2) | lwsync ; 14 | lwsync | | lwz r3,0(r4) ; 15 | li r3,1 | | ; 16 | stw r3,0(r4) | | ; 17 | exists 18 | (x=2 /\ 2:r1=2 /\ 2:r3=0) 19 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/safe013.litmus: -------------------------------------------------------------------------------- 1 | PPC safe013 2 | "SyncdWW Wse SyncdWW Rfe DpdW Wse" 3 | Cycle=SyncdWW Wse SyncdWW Rfe DpdW Wse 4 | Relax= 5 | Safe=Wse SyncdWW DpdW BCSyncdWW 6 | { 7 | 0:r2=x; 0:r4=y; 8 | 1:r2=y; 1:r5=z; 9 | 2:r2=z; 2:r4=x; 10 | } 11 | P0 | P1 | P2 ; 12 | li r1,2 | lwz r1,0(r2) | li r1,2 ; 13 | stw r1,0(r2) | xor r3,r1,r1 | stw r1,0(r2) ; 14 | sync | li r4,1 | sync ; 15 | li r3,1 | stwx r4,r3,r5 | li r3,1 ; 16 | stw r3,0(r4) | | stw r3,0(r4) ; 17 | exists 18 | (x=2 /\ z=2 /\ 1:r1=1) 19 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/safe038.litmus: -------------------------------------------------------------------------------- 1 | PPC safe038 2 | "LwSyncdWW Wse SyncdWW Wse SyncdWW Wse" 3 | Cycle=LwSyncdWW Wse SyncdWW Wse SyncdWW Wse 4 | Relax= 5 | Safe=Wse SyncdWW LwSyncdWW 6 | { 7 | 0:r2=x; 0:r4=y; 8 | 1:r2=y; 1:r4=z; 9 | 2:r2=z; 2:r4=x; 10 | } 11 | P0 | P1 | P2 ; 12 | li r1,2 | li r1,2 | li r1,2 ; 13 | stw r1,0(r2) | stw r1,0(r2) | stw r1,0(r2) ; 14 | sync | sync | lwsync ; 15 | li r3,1 | li r3,1 | li r3,1 ; 16 | stw r3,0(r4) | stw r3,0(r4) | stw r3,0(r4) ; 17 | exists 18 | (x=2 /\ y=2 /\ z=2) 19 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/safe040.litmus: -------------------------------------------------------------------------------- 1 | PPC safe040 2 | "SyncdWR Fre SyncdWW Wse SyncdWW Wse" 3 | Cycle=SyncdWR Fre SyncdWW Wse SyncdWW Wse 4 | Relax= 5 | Safe=Fre Wse SyncdWW SyncdWR 6 | { 7 | 0:r2=x; 0:r4=y; 8 | 1:r2=y; 1:r4=z; 9 | 2:r2=z; 2:r4=x; 10 | } 11 | P0 | P1 | P2 ; 12 | li r1,1 | li r1,2 | li r1,2 ; 13 | stw r1,0(r2) | stw r1,0(r2) | stw r1,0(r2) ; 14 | sync | sync | sync ; 15 | li r3,1 | li r3,1 | lwz r3,0(r4) ; 16 | stw r3,0(r4) | stw r3,0(r4) | ; 17 | exists 18 | (y=2 /\ z=2 /\ 2:r3=0) 19 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/safe046.litmus: -------------------------------------------------------------------------------- 1 | PPC safe046 2 | "LwSyncdWW Wse LwSyncdWW Wse SyncdWW Wse" 3 | Cycle=LwSyncdWW Wse LwSyncdWW Wse SyncdWW Wse 4 | Relax= 5 | Safe=Wse SyncdWW LwSyncdWW 6 | { 7 | 0:r2=x; 0:r4=y; 8 | 1:r2=y; 1:r4=z; 9 | 2:r2=z; 2:r4=x; 10 | } 11 | P0 | P1 | P2 ; 12 | li r1,2 | li r1,2 | li r1,2 ; 13 | stw r1,0(r2) | stw r1,0(r2) | stw r1,0(r2) ; 14 | lwsync | sync | lwsync ; 15 | li r3,1 | li r3,1 | li r3,1 ; 16 | stw r3,0(r4) | stw r3,0(r4) | stw r3,0(r4) ; 17 | exists 18 | (x=2 /\ y=2 /\ z=2) 19 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/safe072.litmus: -------------------------------------------------------------------------------- 1 | PPC safe072 2 | "SyncdWR Fre SyncdWR Fre SyncdWW Wse" 3 | Cycle=SyncdWR Fre SyncdWR Fre SyncdWW Wse 4 | Relax= 5 | Safe=Fre Wse SyncdWW SyncdWR 6 | { 7 | 0:r2=x; 0:r4=y; 8 | 1:r2=y; 1:r4=z; 9 | 2:r2=z; 2:r4=x; 10 | } 11 | P0 | P1 | P2 ; 12 | li r1,1 | li r1,1 | li r1,2 ; 13 | stw r1,0(r2) | stw r1,0(r2) | stw r1,0(r2) ; 14 | sync | sync | sync ; 15 | lwz r3,0(r4) | li r3,1 | lwz r3,0(r4) ; 16 | | stw r3,0(r4) | ; 17 | exists 18 | (z=2 /\ 0:r3=0 /\ 2:r3=0) 19 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/safe136.litmus: -------------------------------------------------------------------------------- 1 | PPC safe136 2 | "LwSyncdWW Wse LwSyncdWW Wse LwSyncdWW Wse" 3 | Cycle=LwSyncdWW Wse LwSyncdWW Wse LwSyncdWW Wse 4 | Relax= 5 | Safe=Wse LwSyncdWW 6 | { 7 | 0:r2=x; 0:r4=y; 8 | 1:r2=y; 1:r4=z; 9 | 2:r2=z; 2:r4=x; 10 | } 11 | P0 | P1 | P2 ; 12 | li r1,2 | li r1,2 | li r1,2 ; 13 | stw r1,0(r2) | stw r1,0(r2) | stw r1,0(r2) ; 14 | lwsync | lwsync | lwsync ; 15 | li r3,1 | li r3,1 | li r3,1 ; 16 | stw r3,0(r4) | stw r3,0(r4) | stw r3,0(r4) ; 17 | exists 18 | (x=2 /\ y=2 /\ z=2) 19 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/podrr006.litmus: -------------------------------------------------------------------------------- 1 | PPC podrr006 2 | "Fre SyncsWW Rfe SyncdRW Rfe PodRR" 3 | Cycle=Fre SyncsWW Rfe SyncdRW Rfe PodRR 4 | Relax=PodRR 5 | Safe=Fre BCSyncsWW BCSyncdRW 6 | { 7 | 0:r2=y; 8 | 1:r2=y; 1:r4=x; 9 | 2:r2=x; 2:r4=y; 10 | } 11 | P0 | P1 | P2 ; 12 | li r1,1 | lwz r1,0(r2) | lwz r1,0(r2) ; 13 | stw r1,0(r2) | sync | lwz r3,0(r4) ; 14 | sync | li r3,1 | ; 15 | li r3,2 | stw r3,0(r4) | ; 16 | stw r3,0(r2) | | ; 17 | exists 18 | (y=2 /\ 1:r1=2 /\ 2:r1=1 /\ 2:r3=0) 19 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/podrr009.litmus: -------------------------------------------------------------------------------- 1 | PPC podrr009 2 | "Fre SyncdWW Rfe SyncsRW Rfe PodRR" 3 | Cycle=Fre SyncdWW Rfe SyncsRW Rfe PodRR 4 | Relax=PodRR 5 | Safe=Fre BCSyncsRW BCSyncdWW 6 | { 7 | 0:r2=y; 0:r4=x; 8 | 1:r2=x; 9 | 2:r2=x; 2:r4=y; 10 | } 11 | P0 | P1 | P2 ; 12 | li r1,1 | lwz r1,0(r2) | lwz r1,0(r2) ; 13 | stw r1,0(r2) | sync | lwz r3,0(r4) ; 14 | sync | li r3,2 | ; 15 | li r3,1 | stw r3,0(r2) | ; 16 | stw r3,0(r4) | | ; 17 | exists 18 | (x=2 /\ 1:r1=1 /\ 2:r1=2 /\ 2:r3=0) 19 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/podrw002.litmus: -------------------------------------------------------------------------------- 1 | PPC podrw002 2 | "Wse SyncdWW Rfe SyncdRW Rfe PodRW" 3 | Cycle=Wse SyncdWW Rfe SyncdRW Rfe PodRW 4 | Relax=PodRW 5 | Safe=Wse BCSyncdWW BCSyncdRW 6 | { 7 | 0:r2=z; 0:r4=x; 8 | 1:r2=x; 1:r4=y; 9 | 2:r2=y; 2:r4=z; 10 | } 11 | P0 | P1 | P2 ; 12 | li r1,2 | lwz r1,0(r2) | lwz r1,0(r2) ; 13 | stw r1,0(r2) | sync | li r3,1 ; 14 | sync | li r3,1 | stw r3,0(r4) ; 15 | li r3,1 | stw r3,0(r4) | ; 16 | stw r3,0(r4) | | ; 17 | exists 18 | (z=2 /\ 1:r1=1 /\ 2:r1=1) 19 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/posrr010.litmus: -------------------------------------------------------------------------------- 1 | PPC posrr010 2 | "Fre SyncdWW Rfe SyncdRW Rfe PosRR" 3 | Cycle=Fre SyncdWW Rfe SyncdRW Rfe PosRR 4 | Relax=PosRR 5 | Safe=Fre BCSyncdWW BCSyncdRW 6 | { 7 | 0:r2=y; 0:r4=x; 8 | 1:r2=x; 1:r4=y; 9 | 2:r2=y; 10 | } 11 | P0 | P1 | P2 ; 12 | li r1,2 | lwz r1,0(r2) | lwz r1,0(r2) ; 13 | stw r1,0(r2) | sync | lwz r3,0(r2) ; 14 | sync | li r3,1 | ; 15 | li r3,1 | stw r3,0(r4) | ; 16 | stw r3,0(r4) | | ; 17 | exists 18 | (y=2 /\ 1:r1=1 /\ 2:r1=1 /\ 2:r3=1) 19 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/safe006.litmus: -------------------------------------------------------------------------------- 1 | PPC safe006 2 | "SyncdWW Rfe SyncsRW Rfe DpdW Wse" 3 | Cycle=SyncdWW Rfe SyncsRW Rfe DpdW Wse 4 | Relax= 5 | Safe=Wse DpdW BCSyncsRW BCSyncdWW 6 | { 7 | 0:r2=x; 8 | 1:r2=x; 1:r5=y; 9 | 2:r2=y; 2:r4=x; 10 | } 11 | P0 | P1 | P2 ; 12 | lwz r1,0(r2) | lwz r1,0(r2) | li r1,2 ; 13 | sync | xor r3,r1,r1 | stw r1,0(r2) ; 14 | li r3,2 | li r4,1 | sync ; 15 | stw r3,0(r2) | stwx r4,r3,r5 | li r3,1 ; 16 | | | stw r3,0(r4) ; 17 | exists 18 | (x=2 /\ y=2 /\ 0:r1=1 /\ 1:r1=2) 19 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/safe031.litmus: -------------------------------------------------------------------------------- 1 | PPC safe031 2 | "SyncdWW Rfe SyncdRW Rfe DpdW Wse" 3 | Cycle=SyncdWW Rfe SyncdRW Rfe DpdW Wse 4 | Relax= 5 | Safe=Wse DpdW BCSyncdWW BCSyncdRW 6 | { 7 | 0:r2=x; 0:r4=y; 8 | 1:r2=y; 1:r5=z; 9 | 2:r2=z; 2:r4=x; 10 | } 11 | P0 | P1 | P2 ; 12 | lwz r1,0(r2) | lwz r1,0(r2) | li r1,2 ; 13 | sync | xor r3,r1,r1 | stw r1,0(r2) ; 14 | li r3,1 | li r4,1 | sync ; 15 | stw r3,0(r4) | stwx r4,r3,r5 | li r3,1 ; 16 | | | stw r3,0(r4) ; 17 | exists 18 | (z=2 /\ 0:r1=1 /\ 1:r1=1) 19 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/safe043.litmus: -------------------------------------------------------------------------------- 1 | PPC safe043 2 | "SyncdWW Rfe SyncdRW Wse SyncdWW Wse" 3 | Cycle=SyncdWW Rfe SyncdRW Wse SyncdWW Wse 4 | Relax= 5 | Safe=Wse SyncdWW SyncdRW BCSyncdWW 6 | { 7 | 0:r2=x; 0:r4=y; 8 | 1:r2=y; 1:r4=z; 9 | 2:r2=z; 2:r4=x; 10 | } 11 | P0 | P1 | P2 ; 12 | lwz r1,0(r2) | li r1,2 | li r1,2 ; 13 | sync | stw r1,0(r2) | stw r1,0(r2) ; 14 | li r3,1 | sync | sync ; 15 | stw r3,0(r4) | li r3,1 | li r3,1 ; 16 | | stw r3,0(r4) | stw r3,0(r4) ; 17 | exists 18 | (y=2 /\ z=2 /\ 0:r1=1) 19 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/safe147.litmus: -------------------------------------------------------------------------------- 1 | PPC safe147 2 | "LwSyncdWW Rfe SyncdRW Wse LwSyncdWW Wse" 3 | Cycle=LwSyncdWW Rfe SyncdRW Wse LwSyncdWW Wse 4 | Relax= 5 | Safe=Wse LwSyncdWW ACSyncdRW 6 | { 7 | 0:r2=x; 0:r4=y; 8 | 1:r2=y; 1:r4=z; 9 | 2:r2=z; 2:r4=x; 10 | } 11 | P0 | P1 | P2 ; 12 | lwz r1,0(r2) | li r1,2 | li r1,2 ; 13 | sync | stw r1,0(r2) | stw r1,0(r2) ; 14 | li r3,1 | lwsync | lwsync ; 15 | stw r3,0(r4) | li r3,1 | li r3,1 ; 16 | | stw r3,0(r4) | stw r3,0(r4) ; 17 | exists 18 | (y=2 /\ z=2 /\ 0:r1=1) 19 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/safe242.litmus: -------------------------------------------------------------------------------- 1 | PPC safe242 2 | "SyncdWW Rfe DpdW Rfe SyncdRW Wse" 3 | Cycle=SyncdWW Rfe DpdW Rfe SyncdRW Wse 4 | Relax= 5 | Safe=Wse DpdW ACSyncdRW BCSyncdWW 6 | { 7 | 0:r2=x; 0:r5=y; 8 | 1:r2=y; 1:r4=z; 9 | 2:r2=z; 2:r4=x; 10 | } 11 | P0 | P1 | P2 ; 12 | lwz r1,0(r2) | lwz r1,0(r2) | li r1,2 ; 13 | xor r3,r1,r1 | sync | stw r1,0(r2) ; 14 | li r4,1 | li r3,1 | sync ; 15 | stwx r4,r3,r5 | stw r3,0(r4) | li r3,1 ; 16 | | | stw r3,0(r4) ; 17 | exists 18 | (z=2 /\ 0:r1=1 /\ 1:r1=1) 19 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/safe245.litmus: -------------------------------------------------------------------------------- 1 | PPC safe245 2 | "SyncdWW Rfe DpsW Rfe SyncdRW Wse" 3 | Cycle=SyncdWW Rfe DpsW Rfe SyncdRW Wse 4 | Relax= 5 | Safe=Wse DpsW ACSyncdRW BCSyncdWW 6 | { 7 | 0:r2=x; 8 | 1:r2=x; 1:r4=y; 9 | 2:r2=y; 2:r4=x; 10 | } 11 | P0 | P1 | P2 ; 12 | lwz r1,0(r2) | lwz r1,0(r2) | li r1,2 ; 13 | xor r3,r1,r1 | sync | stw r1,0(r2) ; 14 | li r4,2 | li r3,1 | sync ; 15 | stwx r4,r3,r2 | stw r3,0(r4) | li r3,1 ; 16 | | | stw r3,0(r4) ; 17 | exists 18 | (x=2 /\ y=2 /\ 0:r1=1 /\ 1:r1=2) 19 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/safe289.litmus: -------------------------------------------------------------------------------- 1 | PPC safe289 2 | "LwSyncdWW Rfe SyncdRW Rfe SyncdRW Wse" 3 | Cycle=LwSyncdWW Rfe SyncdRW Rfe SyncdRW Wse 4 | Relax= 5 | Safe=Wse LwSyncdWW ACSyncdRW 6 | { 7 | 0:r2=x; 0:r4=y; 8 | 1:r2=y; 1:r4=z; 9 | 2:r2=z; 2:r4=x; 10 | } 11 | P0 | P1 | P2 ; 12 | lwz r1,0(r2) | lwz r1,0(r2) | li r1,2 ; 13 | sync | sync | stw r1,0(r2) ; 14 | li r3,1 | li r3,1 | lwsync ; 15 | stw r3,0(r4) | stw r3,0(r4) | li r3,1 ; 16 | | | stw r3,0(r4) ; 17 | exists 18 | (z=2 /\ 0:r1=1 /\ 1:r1=1) 19 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/safe307.litmus: -------------------------------------------------------------------------------- 1 | PPC safe307 2 | "SyncdWR Fre SyncsWW Rfe DpdR Fre" 3 | Cycle=SyncdWR Fre SyncsWW Rfe DpdR Fre 4 | Relax= 5 | Safe=Fre SyncdWR DpdR BCSyncsWW 6 | { 7 | 0:r2=x; 8 | 1:r2=x; 1:r5=y; 9 | 2:r2=y; 2:r4=x; 10 | } 11 | P0 | P1 | P2 ; 12 | li r1,1 | lwz r1,0(r2) | li r1,1 ; 13 | stw r1,0(r2) | xor r3,r1,r1 | stw r1,0(r2) ; 14 | sync | lwzx r4,r3,r5 | sync ; 15 | li r3,2 | | lwz r3,0(r4) ; 16 | stw r3,0(r2) | | ; 17 | exists 18 | (x=2 /\ 1:r1=2 /\ 1:r4=0 /\ 2:r3=0) 19 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/safe326.litmus: -------------------------------------------------------------------------------- 1 | PPC safe326 2 | "SyncsWR Fre SyncdWW Rfe DpdR Fre" 3 | Cycle=SyncsWR Fre SyncdWW Rfe DpdR Fre 4 | Relax= 5 | Safe=Fre SyncsWR DpdR BCSyncdWW 6 | { 7 | 0:r2=y; 0:r4=x; 8 | 1:r2=x; 1:r5=y; 9 | 2:r2=y; 10 | } 11 | P0 | P1 | P2 ; 12 | li r1,2 | lwz r1,0(r2) | li r1,1 ; 13 | stw r1,0(r2) | xor r3,r1,r1 | stw r1,0(r2) ; 14 | sync | lwzx r4,r3,r5 | sync ; 15 | li r3,1 | | lwz r3,0(r2) ; 16 | stw r3,0(r4) | | ; 17 | exists 18 | (y=2 /\ 1:r1=1 /\ 1:r4=0 /\ 2:r3=1) 19 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/safe345.litmus: -------------------------------------------------------------------------------- 1 | PPC safe345 2 | "SyncdWR Fre SyncdWW Rfe DpsR Fre" 3 | Cycle=SyncdWR Fre SyncdWW Rfe DpsR Fre 4 | Relax= 5 | Safe=Fre SyncdWR DpsR BCSyncdWW 6 | { 7 | 0:r2=x; 0:r4=y; 8 | 1:r2=y; 9 | 2:r2=y; 2:r4=x; 10 | } 11 | P0 | P1 | P2 ; 12 | li r1,1 | lwz r1,0(r2) | li r1,2 ; 13 | stw r1,0(r2) | xor r3,r1,r1 | stw r1,0(r2) ; 14 | sync | lwzx r4,r3,r2 | sync ; 15 | li r3,1 | | lwz r3,0(r4) ; 16 | stw r3,0(r4) | | ; 17 | exists 18 | (y=2 /\ 1:r1=1 /\ 1:r4=1 /\ 2:r3=0) 19 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/podrr003.litmus: -------------------------------------------------------------------------------- 1 | PPC podrr003 2 | "Fre SyncdWW Rfe SyncdRW Rfe PodRR" 3 | Cycle=Fre SyncdWW Rfe SyncdRW Rfe PodRR 4 | Relax=PodRR 5 | Safe=Fre BCSyncdWW BCSyncdRW 6 | { 7 | 0:r2=z; 0:r4=x; 8 | 1:r2=x; 1:r4=y; 9 | 2:r2=y; 2:r4=z; 10 | } 11 | P0 | P1 | P2 ; 12 | li r1,1 | lwz r1,0(r2) | lwz r1,0(r2) ; 13 | stw r1,0(r2) | sync | lwz r3,0(r4) ; 14 | sync | li r3,1 | ; 15 | li r3,1 | stw r3,0(r4) | ; 16 | stw r3,0(r4) | | ; 17 | exists 18 | (1:r1=1 /\ 2:r1=1 /\ 2:r3=0) 19 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/safe001.litmus: -------------------------------------------------------------------------------- 1 | PPC safe001 2 | "SyncdWR Fre SyncsWW Rfe DpdW Wse" 3 | Cycle=SyncdWR Fre SyncsWW Rfe DpdW Wse 4 | Relax= 5 | Safe=Fre Wse SyncdWR DpdW BCSyncsWW 6 | { 7 | 0:r2=x; 8 | 1:r2=x; 1:r5=y; 9 | 2:r2=y; 2:r4=x; 10 | } 11 | P0 | P1 | P2 ; 12 | li r1,1 | lwz r1,0(r2) | li r1,2 ; 13 | stw r1,0(r2) | xor r3,r1,r1 | stw r1,0(r2) ; 14 | sync | li r4,1 | sync ; 15 | li r3,2 | stwx r4,r3,r5 | lwz r3,0(r4) ; 16 | stw r3,0(r2) | | ; 17 | exists 18 | (x=2 /\ y=2 /\ 1:r1=2 /\ 2:r3=0) 19 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/safe015.litmus: -------------------------------------------------------------------------------- 1 | PPC safe015 2 | "LwSyncdWW Wse SyncdWW Rfe DpdW Wse" 3 | Cycle=LwSyncdWW Wse SyncdWW Rfe DpdW Wse 4 | Relax= 5 | Safe=Wse LwSyncdWW DpdW BCSyncdWW 6 | { 7 | 0:r2=x; 0:r4=y; 8 | 1:r2=y; 1:r5=z; 9 | 2:r2=z; 2:r4=x; 10 | } 11 | P0 | P1 | P2 ; 12 | li r1,2 | lwz r1,0(r2) | li r1,2 ; 13 | stw r1,0(r2) | xor r3,r1,r1 | stw r1,0(r2) ; 14 | sync | li r4,1 | lwsync ; 15 | li r3,1 | stwx r4,r3,r5 | li r3,1 ; 16 | stw r3,0(r4) | | stw r3,0(r4) ; 17 | exists 18 | (x=2 /\ z=2 /\ 1:r1=1) 19 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/safe021.litmus: -------------------------------------------------------------------------------- 1 | PPC safe021 2 | "SyncdWR Fre SyncdWW Rfe DpdW Wse" 3 | Cycle=SyncdWR Fre SyncdWW Rfe DpdW Wse 4 | Relax= 5 | Safe=Fre Wse SyncdWR DpdW BCSyncdWW 6 | { 7 | 0:r2=x; 0:r4=y; 8 | 1:r2=y; 1:r5=z; 9 | 2:r2=z; 2:r4=x; 10 | } 11 | P0 | P1 | P2 ; 12 | li r1,1 | lwz r1,0(r2) | li r1,2 ; 13 | stw r1,0(r2) | xor r3,r1,r1 | stw r1,0(r2) ; 14 | sync | li r4,1 | sync ; 15 | li r3,1 | stwx r4,r3,r5 | lwz r3,0(r4) ; 16 | stw r3,0(r4) | | ; 17 | exists 18 | (z=2 /\ 1:r1=1 /\ 2:r3=0) 19 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/safe051.litmus: -------------------------------------------------------------------------------- 1 | PPC safe051 2 | "SyncdWW Rfe LwSyncdRW Wse SyncdWW Wse" 3 | Cycle=SyncdWW Rfe LwSyncdRW Wse SyncdWW Wse 4 | Relax= 5 | Safe=Wse SyncdWW LwSyncdRW BCSyncdWW 6 | { 7 | 0:r2=x; 0:r4=y; 8 | 1:r2=y; 1:r4=z; 9 | 2:r2=z; 2:r4=x; 10 | } 11 | P0 | P1 | P2 ; 12 | lwz r1,0(r2) | li r1,2 | li r1,2 ; 13 | lwsync | stw r1,0(r2) | stw r1,0(r2) ; 14 | li r3,1 | sync | sync ; 15 | stw r3,0(r4) | li r3,1 | li r3,1 ; 16 | | stw r3,0(r4) | stw r3,0(r4) ; 17 | exists 18 | (y=2 /\ z=2 /\ 0:r1=1) 19 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/safe058.litmus: -------------------------------------------------------------------------------- 1 | PPC safe058 2 | "LwSyncdWW Rfe SyncdRW Wse SyncdWW Wse" 3 | Cycle=LwSyncdWW Rfe SyncdRW Wse SyncdWW Wse 4 | Relax= 5 | Safe=Wse SyncdWW LwSyncdWW ACSyncdRW 6 | { 7 | 0:r2=x; 0:r4=y; 8 | 1:r2=y; 1:r4=z; 9 | 2:r2=z; 2:r4=x; 10 | } 11 | P0 | P1 | P2 ; 12 | lwz r1,0(r2) | li r1,2 | li r1,2 ; 13 | sync | stw r1,0(r2) | stw r1,0(r2) ; 14 | li r3,1 | sync | lwsync ; 15 | stw r3,0(r4) | li r3,1 | li r3,1 ; 16 | | stw r3,0(r4) | stw r3,0(r4) ; 17 | exists 18 | (y=2 /\ z=2 /\ 0:r1=1) 19 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/safe065.litmus: -------------------------------------------------------------------------------- 1 | PPC safe065 2 | "SyncdWW Rfe DpdR Fre SyncdWW Wse" 3 | Cycle=SyncdWW Rfe DpdR Fre SyncdWW Wse 4 | Relax= 5 | Safe=Fre Wse SyncdWW DpdR BCSyncdWW 6 | { 7 | 0:r2=x; 0:r5=y; 8 | 1:r2=y; 1:r4=z; 9 | 2:r2=z; 2:r4=x; 10 | } 11 | P0 | P1 | P2 ; 12 | lwz r1,0(r2) | li r1,1 | li r1,2 ; 13 | xor r3,r1,r1 | stw r1,0(r2) | stw r1,0(r2) ; 14 | lwzx r4,r3,r5 | sync | sync ; 15 | | li r3,1 | li r3,1 ; 16 | | stw r3,0(r4) | stw r3,0(r4) ; 17 | exists 18 | (z=2 /\ 0:r1=1 /\ 0:r4=0) 19 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/safe067.litmus: -------------------------------------------------------------------------------- 1 | PPC safe067 2 | "SyncdWW Rfe DpsR Fre SyncdWW Wse" 3 | Cycle=SyncdWW Rfe DpsR Fre SyncdWW Wse 4 | Relax= 5 | Safe=Fre Wse SyncdWW DpsR BCSyncdWW 6 | { 7 | 0:r2=x; 8 | 1:r2=x; 1:r4=y; 9 | 2:r2=y; 2:r4=x; 10 | } 11 | P0 | P1 | P2 ; 12 | lwz r1,0(r2) | li r1,2 | li r1,2 ; 13 | xor r3,r1,r1 | stw r1,0(r2) | stw r1,0(r2) ; 14 | lwzx r4,r3,r2 | sync | sync ; 15 | | li r3,1 | li r3,1 ; 16 | | stw r3,0(r4) | stw r3,0(r4) ; 17 | exists 18 | (x=2 /\ y=2 /\ 0:r1=1 /\ 0:r4=1) 19 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/safe075.litmus: -------------------------------------------------------------------------------- 1 | PPC safe075 2 | "SyncdWW Rfe SyncdRR Fre SyncdWW Wse" 3 | Cycle=SyncdWW Rfe SyncdRR Fre SyncdWW Wse 4 | Relax= 5 | Safe=Fre Wse SyncdWW SyncdRR BCSyncdWW 6 | { 7 | 0:r2=x; 0:r4=y; 8 | 1:r2=y; 1:r4=z; 9 | 2:r2=z; 2:r4=x; 10 | } 11 | P0 | P1 | P2 ; 12 | lwz r1,0(r2) | li r1,1 | li r1,2 ; 13 | sync | stw r1,0(r2) | stw r1,0(r2) ; 14 | lwz r3,0(r4) | sync | sync ; 15 | | li r3,1 | li r3,1 ; 16 | | stw r3,0(r4) | stw r3,0(r4) ; 17 | exists 18 | (z=2 /\ 0:r1=1 /\ 0:r3=0) 19 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/safe077.litmus: -------------------------------------------------------------------------------- 1 | PPC safe077 2 | "SyncdWR Fre SyncsWR Fre SyncdWW Wse" 3 | Cycle=SyncdWR Fre SyncsWR Fre SyncdWW Wse 4 | Relax= 5 | Safe=Fre Wse SyncsWR SyncdWW SyncdWR 6 | { 7 | 0:r2=x; 8 | 1:r2=x; 1:r4=y; 9 | 2:r2=y; 2:r4=x; 10 | } 11 | P0 | P1 | P2 ; 12 | li r1,1 | li r1,2 | li r1,2 ; 13 | stw r1,0(r2) | stw r1,0(r2) | stw r1,0(r2) ; 14 | sync | sync | sync ; 15 | lwz r3,0(r2) | li r3,1 | lwz r3,0(r4) ; 16 | | stw r3,0(r4) | ; 17 | exists 18 | (x=2 /\ y=2 /\ 0:r3=1 /\ 2:r3=0) 19 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/safe079.litmus: -------------------------------------------------------------------------------- 1 | PPC safe079 2 | "SyncdWW Rfe SyncsRR Fre SyncdWW Wse" 3 | Cycle=SyncdWW Rfe SyncsRR Fre SyncdWW Wse 4 | Relax= 5 | Safe=Fre Wse SyncsRR SyncdWW BCSyncdWW 6 | { 7 | 0:r2=x; 8 | 1:r2=x; 1:r4=y; 9 | 2:r2=y; 2:r4=x; 10 | } 11 | P0 | P1 | P2 ; 12 | lwz r1,0(r2) | li r1,2 | li r1,2 ; 13 | sync | stw r1,0(r2) | stw r1,0(r2) ; 14 | lwz r3,0(r2) | sync | sync ; 15 | | li r3,1 | li r3,1 ; 16 | | stw r3,0(r4) | stw r3,0(r4) ; 17 | exists 18 | (x=2 /\ y=2 /\ 0:r1=1 /\ 0:r3=1) 19 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/safe104.litmus: -------------------------------------------------------------------------------- 1 | PPC safe104 2 | "SyncdWR Fre SyncsWW Rfe SyncdRW Wse" 3 | Cycle=SyncdWR Fre SyncsWW Rfe SyncdRW Wse 4 | Relax= 5 | Safe=Fre Wse SyncdWR SyncdRW BCSyncsWW 6 | { 7 | 0:r2=x; 8 | 1:r2=x; 1:r4=y; 9 | 2:r2=y; 2:r4=x; 10 | } 11 | P0 | P1 | P2 ; 12 | li r1,1 | lwz r1,0(r2) | li r1,2 ; 13 | stw r1,0(r2) | sync | stw r1,0(r2) ; 14 | sync | li r3,1 | sync ; 15 | li r3,2 | stw r3,0(r4) | lwz r3,0(r4) ; 16 | stw r3,0(r2) | | ; 17 | exists 18 | (x=2 /\ y=2 /\ 1:r1=2 /\ 2:r3=0) 19 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/safe109.litmus: -------------------------------------------------------------------------------- 1 | PPC safe109 2 | "SyncdWW Rfe SyncsRW Rfe SyncdRW Wse" 3 | Cycle=SyncdWW Rfe SyncsRW Rfe SyncdRW Wse 4 | Relax= 5 | Safe=Wse SyncdRW BCSyncsRW BCSyncdWW 6 | { 7 | 0:r2=x; 8 | 1:r2=x; 1:r4=y; 9 | 2:r2=y; 2:r4=x; 10 | } 11 | P0 | P1 | P2 ; 12 | lwz r1,0(r2) | lwz r1,0(r2) | li r1,2 ; 13 | sync | sync | stw r1,0(r2) ; 14 | li r3,2 | li r3,1 | sync ; 15 | stw r3,0(r2) | stw r3,0(r4) | li r3,1 ; 16 | | | stw r3,0(r4) ; 17 | exists 18 | (x=2 /\ y=2 /\ 0:r1=1 /\ 1:r1=2) 19 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/safe115.litmus: -------------------------------------------------------------------------------- 1 | PPC safe115 2 | "LwSyncdWW Wse SyncdWW Rfe SyncdRW Wse" 3 | Cycle=LwSyncdWW Wse SyncdWW Rfe SyncdRW Wse 4 | Relax= 5 | Safe=Wse SyncdRW LwSyncdWW BCSyncdWW 6 | { 7 | 0:r2=x; 0:r4=y; 8 | 1:r2=y; 1:r4=z; 9 | 2:r2=z; 2:r4=x; 10 | } 11 | P0 | P1 | P2 ; 12 | li r1,2 | lwz r1,0(r2) | li r1,2 ; 13 | stw r1,0(r2) | sync | stw r1,0(r2) ; 14 | sync | li r3,1 | lwsync ; 15 | li r3,1 | stw r3,0(r4) | li r3,1 ; 16 | stw r3,0(r4) | | stw r3,0(r4) ; 17 | exists 18 | (x=2 /\ z=2 /\ 1:r1=1) 19 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/safe121.litmus: -------------------------------------------------------------------------------- 1 | PPC safe121 2 | "SyncdWR Fre SyncdWW Rfe SyncdRW Wse" 3 | Cycle=SyncdWR Fre SyncdWW Rfe SyncdRW Wse 4 | Relax= 5 | Safe=Fre Wse SyncdWR SyncdRW BCSyncdWW 6 | { 7 | 0:r2=x; 0:r4=y; 8 | 1:r2=y; 1:r4=z; 9 | 2:r2=z; 2:r4=x; 10 | } 11 | P0 | P1 | P2 ; 12 | li r1,1 | lwz r1,0(r2) | li r1,2 ; 13 | stw r1,0(r2) | sync | stw r1,0(r2) ; 14 | sync | li r3,1 | sync ; 15 | li r3,1 | stw r3,0(r4) | lwz r3,0(r4) ; 16 | stw r3,0(r4) | | ; 17 | exists 18 | (z=2 /\ 1:r1=1 /\ 2:r3=0) 19 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/safe131.litmus: -------------------------------------------------------------------------------- 1 | PPC safe131 2 | "SyncdWW Rfe SyncdRW Rfe SyncdRW Wse" 3 | Cycle=SyncdWW Rfe SyncdRW Rfe SyncdRW Wse 4 | Relax= 5 | Safe=Wse SyncdRW BCSyncdWW BCSyncdRW 6 | { 7 | 0:r2=x; 0:r4=y; 8 | 1:r2=y; 1:r4=z; 9 | 2:r2=z; 2:r4=x; 10 | } 11 | P0 | P1 | P2 ; 12 | lwz r1,0(r2) | lwz r1,0(r2) | li r1,2 ; 13 | sync | sync | stw r1,0(r2) ; 14 | li r3,1 | li r3,1 | sync ; 15 | stw r3,0(r4) | stw r3,0(r4) | li r3,1 ; 16 | | | stw r3,0(r4) ; 17 | exists 18 | (z=2 /\ 0:r1=1 /\ 1:r1=1) 19 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/safe138.litmus: -------------------------------------------------------------------------------- 1 | PPC safe138 2 | "SyncdWR Fre LwSyncdWW Wse LwSyncdWW Wse" 3 | Cycle=SyncdWR Fre LwSyncdWW Wse LwSyncdWW Wse 4 | Relax= 5 | Safe=Fre Wse SyncdWR LwSyncdWW 6 | { 7 | 0:r2=x; 0:r4=y; 8 | 1:r2=y; 1:r4=z; 9 | 2:r2=z; 2:r4=x; 10 | } 11 | P0 | P1 | P2 ; 12 | li r1,1 | li r1,2 | li r1,2 ; 13 | stw r1,0(r2) | stw r1,0(r2) | stw r1,0(r2) ; 14 | lwsync | lwsync | sync ; 15 | li r3,1 | li r3,1 | lwz r3,0(r4) ; 16 | stw r3,0(r4) | stw r3,0(r4) | ; 17 | exists 18 | (y=2 /\ z=2 /\ 2:r3=0) 19 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/safe160.litmus: -------------------------------------------------------------------------------- 1 | PPC safe160 2 | "SyncdWR Fre SyncdWR Fre LwSyncdWW Wse" 3 | Cycle=SyncdWR Fre SyncdWR Fre LwSyncdWW Wse 4 | Relax= 5 | Safe=Fre Wse SyncdWR LwSyncdWW 6 | { 7 | 0:r2=x; 0:r4=y; 8 | 1:r2=y; 1:r4=z; 9 | 2:r2=z; 2:r4=x; 10 | } 11 | P0 | P1 | P2 ; 12 | li r1,1 | li r1,1 | li r1,2 ; 13 | stw r1,0(r2) | stw r1,0(r2) | stw r1,0(r2) ; 14 | sync | lwsync | sync ; 15 | lwz r3,0(r4) | li r3,1 | lwz r3,0(r4) ; 16 | | stw r3,0(r4) | ; 17 | exists 18 | (z=2 /\ 0:r3=0 /\ 2:r3=0) 19 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/safe315.litmus: -------------------------------------------------------------------------------- 1 | PPC safe315 2 | "SyncdWW Rfe SyncsRW Rfe DpdR Fre" 3 | Cycle=SyncdWW Rfe SyncsRW Rfe DpdR Fre 4 | Relax= 5 | Safe=Fre DpdR BCSyncsRW BCSyncdWW 6 | { 7 | 0:r2=x; 8 | 1:r2=x; 1:r5=y; 9 | 2:r2=y; 2:r4=x; 10 | } 11 | P0 | P1 | P2 ; 12 | lwz r1,0(r2) | lwz r1,0(r2) | li r1,1 ; 13 | sync | xor r3,r1,r1 | stw r1,0(r2) ; 14 | li r3,2 | lwzx r4,r3,r5 | sync ; 15 | stw r3,0(r2) | | li r3,1 ; 16 | | | stw r3,0(r4) ; 17 | exists 18 | (x=2 /\ 0:r1=1 /\ 1:r1=2 /\ 1:r4=0) 19 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/safe323.litmus: -------------------------------------------------------------------------------- 1 | PPC safe323 2 | "SyncdWR Fre SyncdWW Rfe DpdR Fre" 3 | Cycle=SyncdWR Fre SyncdWW Rfe DpdR Fre 4 | Relax= 5 | Safe=Fre SyncdWR DpdR BCSyncdWW 6 | { 7 | 0:r2=x; 0:r4=y; 8 | 1:r2=y; 1:r5=z; 9 | 2:r2=z; 2:r4=x; 10 | } 11 | P0 | P1 | P2 ; 12 | li r1,1 | lwz r1,0(r2) | li r1,1 ; 13 | stw r1,0(r2) | xor r3,r1,r1 | stw r1,0(r2) ; 14 | sync | lwzx r4,r3,r5 | sync ; 15 | li r3,1 | | lwz r3,0(r4) ; 16 | stw r3,0(r4) | | ; 17 | exists 18 | (1:r1=1 /\ 1:r4=0 /\ 2:r3=0) 19 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/safe336.litmus: -------------------------------------------------------------------------------- 1 | PPC safe336 2 | "SyncsWW Rfe SyncdRW Rfe DpdR Fre" 3 | Cycle=SyncsWW Rfe SyncdRW Rfe DpdR Fre 4 | Relax= 5 | Safe=Fre DpdR BCSyncsWW BCSyncdRW 6 | { 7 | 0:r2=y; 0:r4=x; 8 | 1:r2=x; 1:r5=y; 9 | 2:r2=y; 10 | } 11 | P0 | P1 | P2 ; 12 | lwz r1,0(r2) | lwz r1,0(r2) | li r1,1 ; 13 | sync | xor r3,r1,r1 | stw r1,0(r2) ; 14 | li r3,1 | lwzx r4,r3,r5 | sync ; 15 | stw r3,0(r4) | | li r3,2 ; 16 | | | stw r3,0(r2) ; 17 | exists 18 | (y=2 /\ 0:r1=2 /\ 1:r1=1 /\ 1:r4=0) 19 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/safe339.litmus: -------------------------------------------------------------------------------- 1 | PPC safe339 2 | "SyncdWW Rfe SyncdRW Rfe DpdR Fre" 3 | Cycle=SyncdWW Rfe SyncdRW Rfe DpdR Fre 4 | Relax= 5 | Safe=Fre DpdR BCSyncdWW BCSyncdRW 6 | { 7 | 0:r2=x; 0:r4=y; 8 | 1:r2=y; 1:r5=z; 9 | 2:r2=z; 2:r4=x; 10 | } 11 | P0 | P1 | P2 ; 12 | lwz r1,0(r2) | lwz r1,0(r2) | li r1,1 ; 13 | sync | xor r3,r1,r1 | stw r1,0(r2) ; 14 | li r3,1 | lwzx r4,r3,r5 | sync ; 15 | stw r3,0(r4) | | li r3,1 ; 16 | | | stw r3,0(r4) ; 17 | exists 18 | (0:r1=1 /\ 1:r1=1 /\ 1:r4=0) 19 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/safe355.litmus: -------------------------------------------------------------------------------- 1 | PPC safe355 2 | "SyncdWW Rfe SyncdRW Rfe DpsR Fre" 3 | Cycle=SyncdWW Rfe SyncdRW Rfe DpsR Fre 4 | Relax= 5 | Safe=Fre DpsR BCSyncdWW BCSyncdRW 6 | { 7 | 0:r2=x; 0:r4=y; 8 | 1:r2=y; 9 | 2:r2=y; 2:r4=x; 10 | } 11 | P0 | P1 | P2 ; 12 | lwz r1,0(r2) | lwz r1,0(r2) | li r1,2 ; 13 | sync | xor r3,r1,r1 | stw r1,0(r2) ; 14 | li r3,1 | lwzx r4,r3,r2 | sync ; 15 | stw r3,0(r4) | | li r3,1 ; 16 | | | stw r3,0(r4) ; 17 | exists 18 | (y=2 /\ 0:r1=1 /\ 1:r1=1 /\ 1:r4=1) 19 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/safe363.litmus: -------------------------------------------------------------------------------- 1 | PPC safe363 2 | "SyncsWW Rfe SyncdRR Fre SyncdWR Fre" 3 | Cycle=SyncsWW Rfe SyncdRR Fre SyncdWR Fre 4 | Relax= 5 | Safe=Fre SyncdWR SyncdRR BCSyncsWW 6 | { 7 | 0:r2=y; 0:r4=x; 8 | 1:r2=x; 1:r4=y; 9 | 2:r2=y; 10 | } 11 | P0 | P1 | P2 ; 12 | lwz r1,0(r2) | li r1,1 | li r1,1 ; 13 | sync | stw r1,0(r2) | stw r1,0(r2) ; 14 | lwz r3,0(r4) | sync | sync ; 15 | | lwz r3,0(r4) | li r3,2 ; 16 | | | stw r3,0(r2) ; 17 | exists 18 | (y=2 /\ 0:r1=2 /\ 0:r3=0 /\ 1:r3=0) 19 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/safe365.litmus: -------------------------------------------------------------------------------- 1 | PPC safe365 2 | "SyncdWW Rfe SyncdRR Fre SyncdWR Fre" 3 | Cycle=SyncdWW Rfe SyncdRR Fre SyncdWR Fre 4 | Relax= 5 | Safe=Fre SyncdWR SyncdRR BCSyncdWW 6 | { 7 | 0:r2=x; 0:r4=y; 8 | 1:r2=y; 1:r4=z; 9 | 2:r2=z; 2:r4=x; 10 | } 11 | P0 | P1 | P2 ; 12 | lwz r1,0(r2) | li r1,1 | li r1,1 ; 13 | sync | stw r1,0(r2) | stw r1,0(r2) ; 14 | lwz r3,0(r4) | sync | sync ; 15 | | lwz r3,0(r4) | li r3,1 ; 16 | | | stw r3,0(r4) ; 17 | exists 18 | (0:r1=1 /\ 0:r3=0 /\ 1:r3=0) 19 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/safe369.litmus: -------------------------------------------------------------------------------- 1 | PPC safe369 2 | "SyncdWW Rfe SyncsRR Fre SyncdWR Fre" 3 | Cycle=SyncdWW Rfe SyncsRR Fre SyncdWR Fre 4 | Relax= 5 | Safe=Fre SyncsRR SyncdWR BCSyncdWW 6 | { 7 | 0:r2=x; 8 | 1:r2=x; 1:r4=y; 9 | 2:r2=y; 2:r4=x; 10 | } 11 | P0 | P1 | P2 ; 12 | lwz r1,0(r2) | li r1,2 | li r1,1 ; 13 | sync | stw r1,0(r2) | stw r1,0(r2) ; 14 | lwz r3,0(r2) | sync | sync ; 15 | | lwz r3,0(r4) | li r3,1 ; 16 | | | stw r3,0(r4) ; 17 | exists 18 | (x=2 /\ 0:r1=1 /\ 0:r3=1 /\ 1:r3=0) 19 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/safe410.litmus: -------------------------------------------------------------------------------- 1 | PPC safe410 2 | "SyncdWW Rfe SyncsRW Rfe SyncdRR Fre" 3 | Cycle=SyncdWW Rfe SyncsRW Rfe SyncdRR Fre 4 | Relax= 5 | Safe=Fre SyncdRR BCSyncsRW BCSyncdWW 6 | { 7 | 0:r2=x; 8 | 1:r2=x; 1:r4=y; 9 | 2:r2=y; 2:r4=x; 10 | } 11 | P0 | P1 | P2 ; 12 | lwz r1,0(r2) | lwz r1,0(r2) | li r1,1 ; 13 | sync | sync | stw r1,0(r2) ; 14 | li r3,2 | lwz r3,0(r4) | sync ; 15 | stw r3,0(r2) | | li r3,1 ; 16 | | | stw r3,0(r4) ; 17 | exists 18 | (x=2 /\ 0:r1=1 /\ 1:r1=2 /\ 1:r3=0) 19 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/safe416.litmus: -------------------------------------------------------------------------------- 1 | PPC safe416 2 | "SyncsWR Fre SyncdWW Rfe SyncdRR Fre" 3 | Cycle=SyncsWR Fre SyncdWW Rfe SyncdRR Fre 4 | Relax= 5 | Safe=Fre SyncsWR SyncdRR BCSyncdWW 6 | { 7 | 0:r2=y; 0:r4=x; 8 | 1:r2=x; 1:r4=y; 9 | 2:r2=y; 10 | } 11 | P0 | P1 | P2 ; 12 | li r1,2 | lwz r1,0(r2) | li r1,1 ; 13 | stw r1,0(r2) | sync | stw r1,0(r2) ; 14 | sync | lwz r3,0(r4) | sync ; 15 | li r3,1 | | lwz r3,0(r2) ; 16 | stw r3,0(r4) | | ; 17 | exists 18 | (y=2 /\ 1:r1=1 /\ 1:r3=0 /\ 2:r3=1) 19 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/safe426.litmus: -------------------------------------------------------------------------------- 1 | PPC safe426 2 | "SyncsWW Rfe SyncdRW Rfe SyncdRR Fre" 3 | Cycle=SyncsWW Rfe SyncdRW Rfe SyncdRR Fre 4 | Relax= 5 | Safe=Fre SyncdRR BCSyncsWW BCSyncdRW 6 | { 7 | 0:r2=y; 0:r4=x; 8 | 1:r2=x; 1:r4=y; 9 | 2:r2=y; 10 | } 11 | P0 | P1 | P2 ; 12 | lwz r1,0(r2) | lwz r1,0(r2) | li r1,1 ; 13 | sync | sync | stw r1,0(r2) ; 14 | li r3,1 | lwz r3,0(r4) | sync ; 15 | stw r3,0(r4) | | li r3,2 ; 16 | | | stw r3,0(r2) ; 17 | exists 18 | (y=2 /\ 0:r1=2 /\ 1:r1=1 /\ 1:r3=0) 19 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/safe450.litmus: -------------------------------------------------------------------------------- 1 | PPC safe450 2 | "SyncdWW Rfe SyncdRW Rfe SyncsRR Fre" 3 | Cycle=SyncdWW Rfe SyncdRW Rfe SyncsRR Fre 4 | Relax= 5 | Safe=Fre SyncsRR BCSyncdWW BCSyncdRW 6 | { 7 | 0:r2=x; 0:r4=y; 8 | 1:r2=y; 9 | 2:r2=y; 2:r4=x; 10 | } 11 | P0 | P1 | P2 ; 12 | lwz r1,0(r2) | lwz r1,0(r2) | li r1,2 ; 13 | sync | sync | stw r1,0(r2) ; 14 | li r3,1 | lwz r3,0(r2) | sync ; 15 | stw r3,0(r4) | | li r3,1 ; 16 | | | stw r3,0(r4) ; 17 | exists 18 | (y=2 /\ 0:r1=1 /\ 1:r1=1 /\ 1:r3=1) 19 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/safe485.litmus: -------------------------------------------------------------------------------- 1 | PPC safe485 2 | "SyncdWW Rfe DpdW Rfe SyncsRR Fre" 3 | Cycle=SyncdWW Rfe DpdW Rfe SyncsRR Fre 4 | Relax= 5 | Safe=Fre DpdW ACSyncsRR BCSyncdWW 6 | { 7 | 0:r2=x; 0:r5=y; 8 | 1:r2=y; 9 | 2:r2=y; 2:r4=x; 10 | } 11 | P0 | P1 | P2 ; 12 | lwz r1,0(r2) | lwz r1,0(r2) | li r1,2 ; 13 | xor r3,r1,r1 | sync | stw r1,0(r2) ; 14 | li r4,1 | lwz r3,0(r2) | sync ; 15 | stwx r4,r3,r5 | | li r3,1 ; 16 | | | stw r3,0(r4) ; 17 | exists 18 | (y=2 /\ 0:r1=1 /\ 1:r1=1 /\ 1:r3=1) 19 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/safe514.litmus: -------------------------------------------------------------------------------- 1 | PPC safe514 2 | "SyncsWW Rfe DpdW Rfe SyncdRR Fre" 3 | Cycle=SyncsWW Rfe DpdW Rfe SyncdRR Fre 4 | Relax= 5 | Safe=Fre DpdW ACSyncdRR BCSyncsWW 6 | { 7 | 0:r2=y; 0:r5=x; 8 | 1:r2=x; 1:r4=y; 9 | 2:r2=y; 10 | } 11 | P0 | P1 | P2 ; 12 | lwz r1,0(r2) | lwz r1,0(r2) | li r1,1 ; 13 | xor r3,r1,r1 | sync | stw r1,0(r2) ; 14 | li r4,1 | lwz r3,0(r4) | sync ; 15 | stwx r4,r3,r5 | | li r3,2 ; 16 | | | stw r3,0(r2) ; 17 | exists 18 | (y=2 /\ 0:r1=2 /\ 1:r1=1 /\ 1:r3=0) 19 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/safe516.litmus: -------------------------------------------------------------------------------- 1 | PPC safe516 2 | "SyncdWW Rfe DpdW Rfe SyncdRR Fre" 3 | Cycle=SyncdWW Rfe DpdW Rfe SyncdRR Fre 4 | Relax= 5 | Safe=Fre DpdW ACSyncdRR BCSyncdWW 6 | { 7 | 0:r2=x; 0:r5=y; 8 | 1:r2=y; 1:r4=z; 9 | 2:r2=z; 2:r4=x; 10 | } 11 | P0 | P1 | P2 ; 12 | lwz r1,0(r2) | lwz r1,0(r2) | li r1,1 ; 13 | xor r3,r1,r1 | sync | stw r1,0(r2) ; 14 | li r4,1 | lwz r3,0(r4) | sync ; 15 | stwx r4,r3,r5 | | li r3,1 ; 16 | | | stw r3,0(r4) ; 17 | exists 18 | (0:r1=1 /\ 1:r1=1 /\ 1:r3=0) 19 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/safe519.litmus: -------------------------------------------------------------------------------- 1 | PPC safe519 2 | "SyncdWW Rfe DpsW Rfe SyncdRR Fre" 3 | Cycle=SyncdWW Rfe DpsW Rfe SyncdRR Fre 4 | Relax= 5 | Safe=Fre DpsW ACSyncdRR BCSyncdWW 6 | { 7 | 0:r2=x; 8 | 1:r2=x; 1:r4=y; 9 | 2:r2=y; 2:r4=x; 10 | } 11 | P0 | P1 | P2 ; 12 | lwz r1,0(r2) | lwz r1,0(r2) | li r1,1 ; 13 | xor r3,r1,r1 | sync | stw r1,0(r2) ; 14 | li r4,2 | lwz r3,0(r4) | sync ; 15 | stwx r4,r3,r2 | | li r3,1 ; 16 | | | stw r3,0(r4) ; 17 | exists 18 | (x=2 /\ 0:r1=1 /\ 1:r1=2 /\ 1:r3=0) 19 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/aclwdrr021.litmus: -------------------------------------------------------------------------------- 1 | PPC aclwdrr021 2 | "Fre SyncdWW Wse SyncdWW Rfe LwSyncdRR" 3 | Cycle=Fre SyncdWW Wse SyncdWW Rfe LwSyncdRR 4 | Relax=ACLwSyncdRR 5 | Safe=Fre Wse SyncdWW 6 | { 7 | 0:r2=z; 0:r4=x; 8 | 1:r2=x; 1:r4=y; 9 | 2:r2=y; 2:r4=z; 10 | } 11 | P0 | P1 | P2 ; 12 | li r1,1 | li r1,2 | lwz r1,0(r2) ; 13 | stw r1,0(r2) | stw r1,0(r2) | lwsync ; 14 | sync | sync | lwz r3,0(r4) ; 15 | li r3,1 | li r3,1 | ; 16 | stw r3,0(r4) | stw r3,0(r4) | ; 17 | exists 18 | (x=2 /\ 2:r1=1 /\ 2:r3=0) 19 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/aclwsrr004.litmus: -------------------------------------------------------------------------------- 1 | PPC aclwsrr004 2 | "Fre SyncdWW Wse SyncdWW Rfe LwSyncsRR" 3 | Cycle=Fre SyncdWW Wse SyncdWW Rfe LwSyncsRR 4 | Relax=ACLwSyncsRR 5 | Safe=Fre Wse SyncdWW 6 | { 7 | 0:r2=y; 0:r4=x; 8 | 1:r2=x; 1:r4=y; 9 | 2:r2=y; 10 | } 11 | P0 | P1 | P2 ; 12 | li r1,2 | li r1,2 | lwz r1,0(r2) ; 13 | stw r1,0(r2) | stw r1,0(r2) | lwsync ; 14 | sync | sync | lwz r3,0(r2) ; 15 | li r3,1 | li r3,1 | ; 16 | stw r3,0(r4) | stw r3,0(r4) | ; 17 | exists 18 | (x=2 /\ y=2 /\ 2:r1=1 /\ 2:r3=1) 19 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/rfe004.litmus: -------------------------------------------------------------------------------- 1 | PPC rfe004 2 | "DpdW Wse Rfe DpdW Wse Rfe" 3 | Cycle=DpdW Wse Rfe DpdW Wse Rfe 4 | Relax=Rfe 5 | Safe=Wse DpdW 6 | { 7 | 0:r2=x; 0:r5=y; 8 | 1:r2=y; 9 | 2:r2=y; 2:r5=x; 10 | 3:r2=x; 11 | } 12 | P0 | P1 | P2 | P3 ; 13 | lwz r1,0(r2) | li r1,2 | lwz r1,0(r2) | li r1,2 ; 14 | xor r3,r1,r1 | stw r1,0(r2) | xor r3,r1,r1 | stw r1,0(r2) ; 15 | li r4,1 | | li r4,1 | ; 16 | stwx r4,r3,r5 | | stwx r4,r3,r5 | ; 17 | exists 18 | (x=2 /\ y=2 /\ 0:r1=2 /\ 2:r1=2) 19 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/safe048.litmus: -------------------------------------------------------------------------------- 1 | PPC safe048 2 | "SyncdWR Fre LwSyncdWW Wse SyncdWW Wse" 3 | Cycle=SyncdWR Fre LwSyncdWW Wse SyncdWW Wse 4 | Relax= 5 | Safe=Fre Wse SyncdWW SyncdWR LwSyncdWW 6 | { 7 | 0:r2=x; 0:r4=y; 8 | 1:r2=y; 1:r4=z; 9 | 2:r2=z; 2:r4=x; 10 | } 11 | P0 | P1 | P2 ; 12 | li r1,1 | li r1,2 | li r1,2 ; 13 | stw r1,0(r2) | stw r1,0(r2) | stw r1,0(r2) ; 14 | lwsync | sync | sync ; 15 | li r3,1 | li r3,1 | lwz r3,0(r4) ; 16 | stw r3,0(r4) | stw r3,0(r4) | ; 17 | exists 18 | (y=2 /\ z=2 /\ 2:r3=0) 19 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/safe070.litmus: -------------------------------------------------------------------------------- 1 | PPC safe070 2 | "LwSyncdWW Wse SyncdWR Fre SyncdWW Wse" 3 | Cycle=LwSyncdWW Wse SyncdWR Fre SyncdWW Wse 4 | Relax= 5 | Safe=Fre Wse SyncdWW SyncdWR LwSyncdWW 6 | { 7 | 0:r2=x; 0:r4=y; 8 | 1:r2=y; 1:r4=z; 9 | 2:r2=z; 2:r4=x; 10 | } 11 | P0 | P1 | P2 ; 12 | li r1,2 | li r1,1 | li r1,2 ; 13 | stw r1,0(r2) | stw r1,0(r2) | stw r1,0(r2) ; 14 | sync | sync | lwsync ; 15 | lwz r3,0(r4) | li r3,1 | li r3,1 ; 16 | | stw r3,0(r4) | stw r3,0(r4) ; 17 | exists 18 | (x=2 /\ z=2 /\ 0:r3=0) 19 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/safe084.litmus: -------------------------------------------------------------------------------- 1 | PPC safe084 2 | "SyncdWW Rfe LwSyncsRR Fre SyncdWW Wse" 3 | Cycle=SyncdWW Rfe LwSyncsRR Fre SyncdWW Wse 4 | Relax= 5 | Safe=Fre Wse SyncdWW LwSyncsRR BCSyncdWW 6 | { 7 | 0:r2=x; 8 | 1:r2=x; 1:r4=y; 9 | 2:r2=y; 2:r4=x; 10 | } 11 | P0 | P1 | P2 ; 12 | lwz r1,0(r2) | li r1,2 | li r1,2 ; 13 | lwsync | stw r1,0(r2) | stw r1,0(r2) ; 14 | lwz r3,0(r2) | sync | sync ; 15 | | li r3,1 | li r3,1 ; 16 | | stw r3,0(r4) | stw r3,0(r4) ; 17 | exists 18 | (x=2 /\ y=2 /\ 0:r1=1 /\ 0:r3=1) 19 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/safe088.litmus: -------------------------------------------------------------------------------- 1 | PPC safe088 2 | "LwSyncdWW Rfe SyncsRR Fre SyncdWW Wse" 3 | Cycle=LwSyncdWW Rfe SyncsRR Fre SyncdWW Wse 4 | Relax= 5 | Safe=Fre Wse SyncdWW LwSyncdWW ACSyncsRR 6 | { 7 | 0:r2=x; 8 | 1:r2=x; 1:r4=y; 9 | 2:r2=y; 2:r4=x; 10 | } 11 | P0 | P1 | P2 ; 12 | lwz r1,0(r2) | li r1,2 | li r1,2 ; 13 | sync | stw r1,0(r2) | stw r1,0(r2) ; 14 | lwz r3,0(r2) | sync | lwsync ; 15 | | li r3,1 | li r3,1 ; 16 | | stw r3,0(r4) | stw r3,0(r4) ; 17 | exists 18 | (x=2 /\ y=2 /\ 0:r1=1 /\ 0:r3=1) 19 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/safe141.litmus: -------------------------------------------------------------------------------- 1 | PPC safe141 2 | "SyncdWW Rfe LwSyncdRW Wse LwSyncdWW Wse" 3 | Cycle=SyncdWW Rfe LwSyncdRW Wse LwSyncdWW Wse 4 | Relax= 5 | Safe=Wse LwSyncdWW LwSyncdRW BCSyncdWW 6 | { 7 | 0:r2=x; 0:r4=y; 8 | 1:r2=y; 1:r4=z; 9 | 2:r2=z; 2:r4=x; 10 | } 11 | P0 | P1 | P2 ; 12 | lwz r1,0(r2) | li r1,2 | li r1,2 ; 13 | lwsync | stw r1,0(r2) | stw r1,0(r2) ; 14 | li r3,1 | lwsync | sync ; 15 | stw r3,0(r4) | li r3,1 | li r3,1 ; 16 | | stw r3,0(r4) | stw r3,0(r4) ; 17 | exists 18 | (y=2 /\ z=2 /\ 0:r1=1) 19 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/safe154.litmus: -------------------------------------------------------------------------------- 1 | PPC safe154 2 | "SyncdWW Rfe DpdR Fre LwSyncdWW Wse" 3 | Cycle=SyncdWW Rfe DpdR Fre LwSyncdWW Wse 4 | Relax= 5 | Safe=Fre Wse LwSyncdWW DpdR BCSyncdWW 6 | { 7 | 0:r2=x; 0:r5=y; 8 | 1:r2=y; 1:r4=z; 9 | 2:r2=z; 2:r4=x; 10 | } 11 | P0 | P1 | P2 ; 12 | lwz r1,0(r2) | li r1,1 | li r1,2 ; 13 | xor r3,r1,r1 | stw r1,0(r2) | stw r1,0(r2) ; 14 | lwzx r4,r3,r5 | lwsync | sync ; 15 | | li r3,1 | li r3,1 ; 16 | | stw r3,0(r4) | stw r3,0(r4) ; 17 | exists 18 | (z=2 /\ 0:r1=1 /\ 0:r4=0) 19 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/safe156.litmus: -------------------------------------------------------------------------------- 1 | PPC safe156 2 | "SyncdWW Rfe DpsR Fre LwSyncdWW Wse" 3 | Cycle=SyncdWW Rfe DpsR Fre LwSyncdWW Wse 4 | Relax= 5 | Safe=Fre Wse LwSyncdWW DpsR BCSyncdWW 6 | { 7 | 0:r2=x; 8 | 1:r2=x; 1:r4=y; 9 | 2:r2=y; 2:r4=x; 10 | } 11 | P0 | P1 | P2 ; 12 | lwz r1,0(r2) | li r1,2 | li r1,2 ; 13 | xor r3,r1,r1 | stw r1,0(r2) | stw r1,0(r2) ; 14 | lwzx r4,r3,r2 | lwsync | sync ; 15 | | li r3,1 | li r3,1 ; 16 | | stw r3,0(r4) | stw r3,0(r4) ; 17 | exists 18 | (x=2 /\ y=2 /\ 0:r1=1 /\ 0:r4=1) 19 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/safe165.litmus: -------------------------------------------------------------------------------- 1 | PPC safe165 2 | "SyncdWR Fre SyncsWR Fre LwSyncdWW Wse" 3 | Cycle=SyncdWR Fre SyncsWR Fre LwSyncdWW Wse 4 | Relax= 5 | Safe=Fre Wse SyncsWR SyncdWR LwSyncdWW 6 | { 7 | 0:r2=x; 8 | 1:r2=x; 1:r4=y; 9 | 2:r2=y; 2:r4=x; 10 | } 11 | P0 | P1 | P2 ; 12 | li r1,1 | li r1,2 | li r1,2 ; 13 | stw r1,0(r2) | stw r1,0(r2) | stw r1,0(r2) ; 14 | sync | lwsync | sync ; 15 | lwz r3,0(r2) | li r3,1 | lwz r3,0(r4) ; 16 | | stw r3,0(r4) | ; 17 | exists 18 | (x=2 /\ y=2 /\ 0:r3=1 /\ 2:r3=0) 19 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/safe167.litmus: -------------------------------------------------------------------------------- 1 | PPC safe167 2 | "SyncdWW Rfe SyncsRR Fre LwSyncdWW Wse" 3 | Cycle=SyncdWW Rfe SyncsRR Fre LwSyncdWW Wse 4 | Relax= 5 | Safe=Fre Wse SyncsRR LwSyncdWW BCSyncdWW 6 | { 7 | 0:r2=x; 8 | 1:r2=x; 1:r4=y; 9 | 2:r2=y; 2:r4=x; 10 | } 11 | P0 | P1 | P2 ; 12 | lwz r1,0(r2) | li r1,2 | li r1,2 ; 13 | sync | stw r1,0(r2) | stw r1,0(r2) ; 14 | lwz r3,0(r2) | lwsync | sync ; 15 | | li r3,1 | li r3,1 ; 16 | | stw r3,0(r4) | stw r3,0(r4) ; 17 | exists 18 | (x=2 /\ y=2 /\ 0:r1=1 /\ 0:r3=1) 19 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/safe176.litmus: -------------------------------------------------------------------------------- 1 | PPC safe176 2 | "LwSyncdWW Rfe SyncsRR Fre LwSyncdWW Wse" 3 | Cycle=LwSyncdWW Rfe SyncsRR Fre LwSyncdWW Wse 4 | Relax= 5 | Safe=Fre Wse LwSyncdWW ACSyncsRR 6 | { 7 | 0:r2=x; 8 | 1:r2=x; 1:r4=y; 9 | 2:r2=y; 2:r4=x; 10 | } 11 | P0 | P1 | P2 ; 12 | lwz r1,0(r2) | li r1,2 | li r1,2 ; 13 | sync | stw r1,0(r2) | stw r1,0(r2) ; 14 | lwz r3,0(r2) | lwsync | lwsync ; 15 | | li r3,1 | li r3,1 ; 16 | | stw r3,0(r4) | stw r3,0(r4) ; 17 | exists 18 | (x=2 /\ y=2 /\ 0:r1=1 /\ 0:r3=1) 19 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/safe184.litmus: -------------------------------------------------------------------------------- 1 | PPC safe184 2 | "LwSyncdWW Rfe SyncdRR Fre LwSyncdWW Wse" 3 | Cycle=LwSyncdWW Rfe SyncdRR Fre LwSyncdWW Wse 4 | Relax= 5 | Safe=Fre Wse LwSyncdWW ACSyncdRR 6 | { 7 | 0:r2=x; 0:r4=y; 8 | 1:r2=y; 1:r4=z; 9 | 2:r2=z; 2:r4=x; 10 | } 11 | P0 | P1 | P2 ; 12 | lwz r1,0(r2) | li r1,1 | li r1,2 ; 13 | sync | stw r1,0(r2) | stw r1,0(r2) ; 14 | lwz r3,0(r4) | lwsync | lwsync ; 15 | | li r3,1 | li r3,1 ; 16 | | stw r3,0(r4) | stw r3,0(r4) ; 17 | exists 18 | (z=2 /\ 0:r1=1 /\ 0:r3=0) 19 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/safe191.litmus: -------------------------------------------------------------------------------- 1 | PPC safe191 2 | "SyncdWR Fre SyncsWW Rfe LwSyncdRW Wse" 3 | Cycle=SyncdWR Fre SyncsWW Rfe LwSyncdRW Wse 4 | Relax= 5 | Safe=Fre Wse SyncdWR LwSyncdRW BCSyncsWW 6 | { 7 | 0:r2=x; 8 | 1:r2=x; 1:r4=y; 9 | 2:r2=y; 2:r4=x; 10 | } 11 | P0 | P1 | P2 ; 12 | li r1,1 | lwz r1,0(r2) | li r1,2 ; 13 | stw r1,0(r2) | lwsync | stw r1,0(r2) ; 14 | sync | li r3,1 | sync ; 15 | li r3,2 | stw r3,0(r4) | lwz r3,0(r4) ; 16 | stw r3,0(r2) | | ; 17 | exists 18 | (x=2 /\ y=2 /\ 1:r1=2 /\ 2:r3=0) 19 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/safe196.litmus: -------------------------------------------------------------------------------- 1 | PPC safe196 2 | "SyncdWW Rfe SyncsRW Rfe LwSyncdRW Wse" 3 | Cycle=SyncdWW Rfe SyncsRW Rfe LwSyncdRW Wse 4 | Relax= 5 | Safe=Wse LwSyncdRW BCSyncsRW BCSyncdWW 6 | { 7 | 0:r2=x; 8 | 1:r2=x; 1:r4=y; 9 | 2:r2=y; 2:r4=x; 10 | } 11 | P0 | P1 | P2 ; 12 | lwz r1,0(r2) | lwz r1,0(r2) | li r1,2 ; 13 | sync | lwsync | stw r1,0(r2) ; 14 | li r3,2 | li r3,1 | sync ; 15 | stw r3,0(r2) | stw r3,0(r4) | li r3,1 ; 16 | | | stw r3,0(r4) ; 17 | exists 18 | (x=2 /\ y=2 /\ 0:r1=1 /\ 1:r1=2) 19 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/safe215.litmus: -------------------------------------------------------------------------------- 1 | PPC safe215 2 | "SyncdWW Rfe SyncdRW Rfe LwSyncdRW Wse" 3 | Cycle=SyncdWW Rfe SyncdRW Rfe LwSyncdRW Wse 4 | Relax= 5 | Safe=Wse LwSyncdRW BCSyncdWW BCSyncdRW 6 | { 7 | 0:r2=x; 0:r4=y; 8 | 1:r2=y; 1:r4=z; 9 | 2:r2=z; 2:r4=x; 10 | } 11 | P0 | P1 | P2 ; 12 | lwz r1,0(r2) | lwz r1,0(r2) | li r1,2 ; 13 | sync | lwsync | stw r1,0(r2) ; 14 | li r3,1 | li r3,1 | sync ; 15 | stw r3,0(r4) | stw r3,0(r4) | li r3,1 ; 16 | | | stw r3,0(r4) ; 17 | exists 18 | (z=2 /\ 0:r1=1 /\ 1:r1=1) 19 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/safe262.litmus: -------------------------------------------------------------------------------- 1 | PPC safe262 2 | "SyncdWW Rfe LwSyncdRW Rfe SyncdRW Wse" 3 | Cycle=SyncdWW Rfe LwSyncdRW Rfe SyncdRW Wse 4 | Relax= 5 | Safe=Wse LwSyncdRW ACSyncdRW BCSyncdWW 6 | { 7 | 0:r2=x; 0:r4=y; 8 | 1:r2=y; 1:r4=z; 9 | 2:r2=z; 2:r4=x; 10 | } 11 | P0 | P1 | P2 ; 12 | lwz r1,0(r2) | lwz r1,0(r2) | li r1,2 ; 13 | lwsync | sync | stw r1,0(r2) ; 14 | li r3,1 | li r3,1 | sync ; 15 | stw r3,0(r4) | stw r3,0(r4) | li r3,1 ; 16 | | | stw r3,0(r4) ; 17 | exists 18 | (z=2 /\ 0:r1=1 /\ 1:r1=1) 19 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/safe266.litmus: -------------------------------------------------------------------------------- 1 | PPC safe266 2 | "SyncdWR Fre LwSyncsWW Rfe SyncdRW Wse" 3 | Cycle=SyncdWR Fre LwSyncsWW Rfe SyncdRW Wse 4 | Relax= 5 | Safe=Fre Wse SyncdWR LwSyncsWW ACSyncdRW 6 | { 7 | 0:r2=x; 8 | 1:r2=x; 1:r4=y; 9 | 2:r2=y; 2:r4=x; 10 | } 11 | P0 | P1 | P2 ; 12 | li r1,1 | lwz r1,0(r2) | li r1,2 ; 13 | stw r1,0(r2) | sync | stw r1,0(r2) ; 14 | lwsync | li r3,1 | sync ; 15 | li r3,2 | stw r3,0(r4) | lwz r3,0(r4) ; 16 | stw r3,0(r2) | | ; 17 | exists 18 | (x=2 /\ y=2 /\ 1:r1=2 /\ 2:r3=0) 19 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/safe271.litmus: -------------------------------------------------------------------------------- 1 | PPC safe271 2 | "SyncdWW Rfe LwSyncsRW Rfe SyncdRW Wse" 3 | Cycle=SyncdWW Rfe LwSyncsRW Rfe SyncdRW Wse 4 | Relax= 5 | Safe=Wse LwSyncsRW ACSyncdRW BCSyncdWW 6 | { 7 | 0:r2=x; 8 | 1:r2=x; 1:r4=y; 9 | 2:r2=y; 2:r4=x; 10 | } 11 | P0 | P1 | P2 ; 12 | lwz r1,0(r2) | lwz r1,0(r2) | li r1,2 ; 13 | lwsync | sync | stw r1,0(r2) ; 14 | li r3,2 | li r3,1 | sync ; 15 | stw r3,0(r2) | stw r3,0(r4) | li r3,1 ; 16 | | | stw r3,0(r4) ; 17 | exists 18 | (x=2 /\ y=2 /\ 0:r1=1 /\ 1:r1=2) 19 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/safe277.litmus: -------------------------------------------------------------------------------- 1 | PPC safe277 2 | "LwSyncdWW Rfe SyncsRW Rfe SyncdRW Wse" 3 | Cycle=LwSyncdWW Rfe SyncsRW Rfe SyncdRW Wse 4 | Relax= 5 | Safe=Wse LwSyncdWW ACSyncsRW ACSyncdRW 6 | { 7 | 0:r2=x; 8 | 1:r2=x; 1:r4=y; 9 | 2:r2=y; 2:r4=x; 10 | } 11 | P0 | P1 | P2 ; 12 | lwz r1,0(r2) | lwz r1,0(r2) | li r1,2 ; 13 | sync | sync | stw r1,0(r2) ; 14 | li r3,2 | li r3,1 | lwsync ; 15 | stw r3,0(r2) | stw r3,0(r4) | li r3,1 ; 16 | | | stw r3,0(r4) ; 17 | exists 18 | (x=2 /\ y=2 /\ 0:r1=1 /\ 1:r1=2) 19 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/safe372.litmus: -------------------------------------------------------------------------------- 1 | PPC safe372 2 | "SyncsWW Rfe LwSyncdRR Fre SyncdWR Fre" 3 | Cycle=SyncsWW Rfe LwSyncdRR Fre SyncdWR Fre 4 | Relax= 5 | Safe=Fre SyncdWR LwSyncdRR BCSyncsWW 6 | { 7 | 0:r2=y; 0:r4=x; 8 | 1:r2=x; 1:r4=y; 9 | 2:r2=y; 10 | } 11 | P0 | P1 | P2 ; 12 | lwz r1,0(r2) | li r1,1 | li r1,1 ; 13 | lwsync | stw r1,0(r2) | stw r1,0(r2) ; 14 | lwz r3,0(r4) | sync | sync ; 15 | | lwz r3,0(r4) | li r3,2 ; 16 | | | stw r3,0(r2) ; 17 | exists 18 | (y=2 /\ 0:r1=2 /\ 0:r3=0 /\ 1:r3=0) 19 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/safe374.litmus: -------------------------------------------------------------------------------- 1 | PPC safe374 2 | "SyncdWW Rfe LwSyncdRR Fre SyncdWR Fre" 3 | Cycle=SyncdWW Rfe LwSyncdRR Fre SyncdWR Fre 4 | Relax= 5 | Safe=Fre SyncdWR LwSyncdRR BCSyncdWW 6 | { 7 | 0:r2=x; 0:r4=y; 8 | 1:r2=y; 1:r4=z; 9 | 2:r2=z; 2:r4=x; 10 | } 11 | P0 | P1 | P2 ; 12 | lwz r1,0(r2) | li r1,1 | li r1,1 ; 13 | lwsync | stw r1,0(r2) | stw r1,0(r2) ; 14 | lwz r3,0(r4) | sync | sync ; 15 | | lwz r3,0(r4) | li r3,1 ; 16 | | | stw r3,0(r4) ; 17 | exists 18 | (0:r1=1 /\ 0:r3=0 /\ 1:r3=0) 19 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/safe377.litmus: -------------------------------------------------------------------------------- 1 | PPC safe377 2 | "SyncdWW Rfe LwSyncsRR Fre SyncdWR Fre" 3 | Cycle=SyncdWW Rfe LwSyncsRR Fre SyncdWR Fre 4 | Relax= 5 | Safe=Fre SyncdWR LwSyncsRR BCSyncdWW 6 | { 7 | 0:r2=x; 8 | 1:r2=x; 1:r4=y; 9 | 2:r2=y; 2:r4=x; 10 | } 11 | P0 | P1 | P2 ; 12 | lwz r1,0(r2) | li r1,2 | li r1,1 ; 13 | lwsync | stw r1,0(r2) | stw r1,0(r2) ; 14 | lwz r3,0(r2) | sync | sync ; 15 | | lwz r3,0(r4) | li r3,1 ; 16 | | | stw r3,0(r4) ; 17 | exists 18 | (x=2 /\ 0:r1=1 /\ 0:r3=1 /\ 1:r3=0) 19 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/safe382.litmus: -------------------------------------------------------------------------------- 1 | PPC safe382 2 | "LwSyncdWW Rfe SyncsRR Fre SyncdWR Fre" 3 | Cycle=LwSyncdWW Rfe SyncsRR Fre SyncdWR Fre 4 | Relax= 5 | Safe=Fre SyncdWR LwSyncdWW ACSyncsRR 6 | { 7 | 0:r2=x; 8 | 1:r2=x; 1:r4=y; 9 | 2:r2=y; 2:r4=x; 10 | } 11 | P0 | P1 | P2 ; 12 | lwz r1,0(r2) | li r1,2 | li r1,1 ; 13 | sync | stw r1,0(r2) | stw r1,0(r2) ; 14 | lwz r3,0(r2) | sync | lwsync ; 15 | | lwz r3,0(r4) | li r3,1 ; 16 | | | stw r3,0(r4) ; 17 | exists 18 | (x=2 /\ 0:r1=1 /\ 0:r3=1 /\ 1:r3=0) 19 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/safe393.litmus: -------------------------------------------------------------------------------- 1 | PPC safe393 2 | "LwSyncdWW Rfe SyncdRR Fre SyncdWR Fre" 3 | Cycle=LwSyncdWW Rfe SyncdRR Fre SyncdWR Fre 4 | Relax= 5 | Safe=Fre SyncdWR LwSyncdWW ACSyncdRR 6 | { 7 | 0:r2=x; 0:r4=y; 8 | 1:r2=y; 1:r4=z; 9 | 2:r2=z; 2:r4=x; 10 | } 11 | P0 | P1 | P2 ; 12 | lwz r1,0(r2) | li r1,1 | li r1,1 ; 13 | sync | stw r1,0(r2) | stw r1,0(r2) ; 14 | lwz r3,0(r4) | sync | lwsync ; 15 | | lwz r3,0(r4) | li r3,1 ; 16 | | | stw r3,0(r4) ; 17 | exists 18 | (0:r1=1 /\ 0:r3=0 /\ 1:r3=0) 19 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/safe396.litmus: -------------------------------------------------------------------------------- 1 | PPC safe396 2 | "LwSyncsWW Rfe SyncdRR Fre SyncdWR Fre" 3 | Cycle=LwSyncsWW Rfe SyncdRR Fre SyncdWR Fre 4 | Relax= 5 | Safe=Fre SyncdWR LwSyncsWW ACSyncdRR 6 | { 7 | 0:r2=y; 0:r4=x; 8 | 1:r2=x; 1:r4=y; 9 | 2:r2=y; 10 | } 11 | P0 | P1 | P2 ; 12 | lwz r1,0(r2) | li r1,1 | li r1,1 ; 13 | sync | stw r1,0(r2) | stw r1,0(r2) ; 14 | lwz r3,0(r4) | sync | lwsync ; 15 | | lwz r3,0(r4) | li r3,2 ; 16 | | | stw r3,0(r2) ; 17 | exists 18 | (y=2 /\ 0:r1=2 /\ 0:r3=0 /\ 1:r3=0) 19 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/safe428.litmus: -------------------------------------------------------------------------------- 1 | PPC safe428 2 | "SyncdWW Rfe SyncdRW Rfe SyncdRR Fre" 3 | Cycle=SyncdWW Rfe SyncdRW Rfe SyncdRR Fre 4 | Relax= 5 | Safe=Fre SyncdRR BCSyncdWW BCSyncdRW 6 | { 7 | 0:r2=x; 0:r4=y; 8 | 1:r2=y; 1:r4=z; 9 | 2:r2=z; 2:r4=x; 10 | } 11 | P0 | P1 | P2 ; 12 | lwz r1,0(r2) | lwz r1,0(r2) | li r1,1 ; 13 | sync | sync | stw r1,0(r2) ; 14 | li r3,1 | lwz r3,0(r4) | sync ; 15 | stw r3,0(r4) | | li r3,1 ; 16 | | | stw r3,0(r4) ; 17 | exists 18 | (0:r1=1 /\ 1:r1=1 /\ 1:r3=0) 19 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/safe433.litmus: -------------------------------------------------------------------------------- 1 | PPC safe433 2 | "SyncdWW Rfe LwSyncdRR Fre SyncsWR Fre" 3 | Cycle=SyncdWW Rfe LwSyncdRR Fre SyncsWR Fre 4 | Relax= 5 | Safe=Fre SyncsWR LwSyncdRR BCSyncdWW 6 | { 7 | 0:r2=x; 0:r4=y; 8 | 1:r2=y; 9 | 2:r2=y; 2:r4=x; 10 | } 11 | P0 | P1 | P2 ; 12 | lwz r1,0(r2) | li r1,1 | li r1,2 ; 13 | lwsync | stw r1,0(r2) | stw r1,0(r2) ; 14 | lwz r3,0(r4) | sync | sync ; 15 | | lwz r3,0(r2) | li r3,1 ; 16 | | | stw r3,0(r4) ; 17 | exists 18 | (y=2 /\ 0:r1=1 /\ 0:r3=0 /\ 1:r3=1) 19 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/safe437.litmus: -------------------------------------------------------------------------------- 1 | PPC safe437 2 | "LwSyncdWW Rfe SyncdRR Fre SyncsWR Fre" 3 | Cycle=LwSyncdWW Rfe SyncdRR Fre SyncsWR Fre 4 | Relax= 5 | Safe=Fre SyncsWR LwSyncdWW ACSyncdRR 6 | { 7 | 0:r2=x; 0:r4=y; 8 | 1:r2=y; 9 | 2:r2=y; 2:r4=x; 10 | } 11 | P0 | P1 | P2 ; 12 | lwz r1,0(r2) | li r1,1 | li r1,2 ; 13 | sync | stw r1,0(r2) | stw r1,0(r2) ; 14 | lwz r3,0(r4) | sync | lwsync ; 15 | | lwz r3,0(r2) | li r3,1 ; 16 | | | stw r3,0(r4) ; 17 | exists 18 | (y=2 /\ 0:r1=1 /\ 0:r3=0 /\ 1:r3=1) 19 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/aclwdrr028.litmus: -------------------------------------------------------------------------------- 1 | PPC aclwdrr028 2 | "Fre SyncdWR Fre SyncdWW Rfe LwSyncdRR" 3 | Cycle=Fre SyncdWR Fre SyncdWW Rfe LwSyncdRR 4 | Relax=ACLwSyncdRR 5 | Safe=Fre SyncdWW SyncdWR 6 | { 7 | 0:r2=z; 0:r4=x; 8 | 1:r2=x; 1:r4=y; 9 | 2:r2=y; 2:r4=z; 10 | } 11 | P0 | P1 | P2 ; 12 | li r1,1 | li r1,1 | lwz r1,0(r2) ; 13 | stw r1,0(r2) | stw r1,0(r2) | lwsync ; 14 | sync | sync | lwz r3,0(r4) ; 15 | lwz r3,0(r4) | li r3,1 | ; 16 | | stw r3,0(r4) | ; 17 | exists 18 | (0:r3=0 /\ 2:r1=1 /\ 2:r3=0) 19 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/aclwdrr029.litmus: -------------------------------------------------------------------------------- 1 | PPC aclwdrr029 2 | "Fre SyncsWR Fre SyncdWW Rfe LwSyncdRR" 3 | Cycle=Fre SyncsWR Fre SyncdWW Rfe LwSyncdRR 4 | Relax=ACLwSyncdRR 5 | Safe=Fre SyncsWR SyncdWW 6 | { 7 | 0:r2=y; 8 | 1:r2=y; 1:r4=x; 9 | 2:r2=x; 2:r4=y; 10 | } 11 | P0 | P1 | P2 ; 12 | li r1,1 | li r1,2 | lwz r1,0(r2) ; 13 | stw r1,0(r2) | stw r1,0(r2) | lwsync ; 14 | sync | sync | lwz r3,0(r4) ; 15 | lwz r3,0(r2) | li r3,1 | ; 16 | | stw r3,0(r4) | ; 17 | exists 18 | (y=2 /\ 0:r3=1 /\ 2:r1=1 /\ 2:r3=0) 19 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/aclwdrr033.litmus: -------------------------------------------------------------------------------- 1 | PPC aclwdrr033 2 | "Fre SyncdWR Fre SyncsWW Rfe LwSyncdRR" 3 | Cycle=Fre SyncdWR Fre SyncsWW Rfe LwSyncdRR 4 | Relax=ACLwSyncdRR 5 | Safe=Fre SyncsWW SyncdWR 6 | { 7 | 0:r2=y; 0:r4=x; 8 | 1:r2=x; 9 | 2:r2=x; 2:r4=y; 10 | } 11 | P0 | P1 | P2 ; 12 | li r1,1 | li r1,1 | lwz r1,0(r2) ; 13 | stw r1,0(r2) | stw r1,0(r2) | lwsync ; 14 | sync | sync | lwz r3,0(r4) ; 15 | lwz r3,0(r4) | li r3,2 | ; 16 | | stw r3,0(r2) | ; 17 | exists 18 | (x=2 /\ 0:r3=0 /\ 2:r1=2 /\ 2:r3=0) 19 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/aclwsrr000.litmus: -------------------------------------------------------------------------------- 1 | PPC aclwsrr000 2 | "DpdR Fre SyncdWW Wse Rfe LwSyncsRR" 3 | Cycle=DpdR Fre SyncdWW Wse Rfe LwSyncsRR 4 | Relax=ACLwSyncsRR 5 | Safe=Fre Wse SyncdWW DpdR 6 | { 7 | 0:r2=x; 0:r4=y; 8 | 1:r2=y; 9 | 2:r2=y; 2:r6=x; 10 | } 11 | P0 | P1 | P2 ; 12 | li r1,1 | li r1,2 | lwz r1,0(r2) ; 13 | stw r1,0(r2) | stw r1,0(r2) | lwsync ; 14 | sync | | lwz r3,0(r2) ; 15 | li r3,1 | | xor r4,r3,r3 ; 16 | stw r3,0(r4) | | lwzx r5,r4,r6 ; 17 | exists 18 | (y=2 /\ 2:r1=2 /\ 2:r3=2 /\ 2:r5=0) 19 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/bclwdww007.litmus: -------------------------------------------------------------------------------- 1 | PPC bclwdww007 2 | "DpdW Wse LwSyncdWW Wse LwSyncdWW Rfe" 3 | Cycle=DpdW Wse LwSyncdWW Wse LwSyncdWW Rfe 4 | Relax=BCLwSyncdWW 5 | Safe=Wse LwSyncdWW DpdW 6 | { 7 | 0:r2=x; 0:r4=y; 8 | 1:r2=y; 1:r4=z; 9 | 2:r2=z; 2:r5=x; 10 | } 11 | P0 | P1 | P2 ; 12 | li r1,2 | li r1,2 | lwz r1,0(r2) ; 13 | stw r1,0(r2) | stw r1,0(r2) | xor r3,r1,r1 ; 14 | lwsync | lwsync | li r4,1 ; 15 | li r3,1 | li r3,1 | stwx r4,r3,r5 ; 16 | stw r3,0(r4) | stw r3,0(r4) | ; 17 | exists 18 | (x=2 /\ y=2 /\ 2:r1=1) 19 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/safe082.litmus: -------------------------------------------------------------------------------- 1 | PPC safe082 2 | "SyncdWW Rfe LwSyncdRR Fre SyncdWW Wse" 3 | Cycle=SyncdWW Rfe LwSyncdRR Fre SyncdWW Wse 4 | Relax= 5 | Safe=Fre Wse SyncdWW LwSyncdRR BCSyncdWW 6 | { 7 | 0:r2=x; 0:r4=y; 8 | 1:r2=y; 1:r4=z; 9 | 2:r2=z; 2:r4=x; 10 | } 11 | P0 | P1 | P2 ; 12 | lwz r1,0(r2) | li r1,1 | li r1,2 ; 13 | lwsync | stw r1,0(r2) | stw r1,0(r2) ; 14 | lwz r3,0(r4) | sync | sync ; 15 | | li r3,1 | li r3,1 ; 16 | | stw r3,0(r4) | stw r3,0(r4) ; 17 | exists 18 | (z=2 /\ 0:r1=1 /\ 0:r3=0) 19 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/safe097.litmus: -------------------------------------------------------------------------------- 1 | PPC safe097 2 | "LwSyncdWW Rfe SyncdRR Fre SyncdWW Wse" 3 | Cycle=LwSyncdWW Rfe SyncdRR Fre SyncdWW Wse 4 | Relax= 5 | Safe=Fre Wse SyncdWW LwSyncdWW ACSyncdRR 6 | { 7 | 0:r2=x; 0:r4=y; 8 | 1:r2=y; 1:r4=z; 9 | 2:r2=z; 2:r4=x; 10 | } 11 | P0 | P1 | P2 ; 12 | lwz r1,0(r2) | li r1,1 | li r1,2 ; 13 | sync | stw r1,0(r2) | stw r1,0(r2) ; 14 | lwz r3,0(r4) | sync | lwsync ; 15 | | li r3,1 | li r3,1 ; 16 | | stw r3,0(r4) | stw r3,0(r4) ; 17 | exists 18 | (z=2 /\ 0:r1=1 /\ 0:r3=0) 19 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/safe163.litmus: -------------------------------------------------------------------------------- 1 | PPC safe163 2 | "SyncdWW Rfe SyncdRR Fre LwSyncdWW Wse" 3 | Cycle=SyncdWW Rfe SyncdRR Fre LwSyncdWW Wse 4 | Relax= 5 | Safe=Fre Wse SyncdRR LwSyncdWW BCSyncdWW 6 | { 7 | 0:r2=x; 0:r4=y; 8 | 1:r2=y; 1:r4=z; 9 | 2:r2=z; 2:r4=x; 10 | } 11 | P0 | P1 | P2 ; 12 | lwz r1,0(r2) | li r1,1 | li r1,2 ; 13 | sync | stw r1,0(r2) | stw r1,0(r2) ; 14 | lwz r3,0(r4) | lwsync | sync ; 15 | | li r3,1 | li r3,1 ; 16 | | stw r3,0(r4) | stw r3,0(r4) ; 17 | exists 18 | (z=2 /\ 0:r1=1 /\ 0:r3=0) 19 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/safe205.litmus: -------------------------------------------------------------------------------- 1 | PPC safe205 2 | "SyncdWR Fre SyncdWW Rfe LwSyncdRW Wse" 3 | Cycle=SyncdWR Fre SyncdWW Rfe LwSyncdRW Wse 4 | Relax= 5 | Safe=Fre Wse SyncdWR LwSyncdRW BCSyncdWW 6 | { 7 | 0:r2=x; 0:r4=y; 8 | 1:r2=y; 1:r4=z; 9 | 2:r2=z; 2:r4=x; 10 | } 11 | P0 | P1 | P2 ; 12 | li r1,1 | lwz r1,0(r2) | li r1,2 ; 13 | stw r1,0(r2) | lwsync | stw r1,0(r2) ; 14 | sync | li r3,1 | sync ; 15 | li r3,1 | stw r3,0(r4) | lwz r3,0(r4) ; 16 | stw r3,0(r4) | | ; 17 | exists 18 | (z=2 /\ 1:r1=1 /\ 2:r3=0) 19 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/safe218.litmus: -------------------------------------------------------------------------------- 1 | PPC safe218 2 | "Rfe SyncdRW Wse Rfe SyncdRW Wse" 3 | Cycle=Rfe SyncdRW Wse Rfe SyncdRW Wse 4 | Relax= 5 | Safe=Wse ACSyncdRW 6 | { 7 | 0:r2=y; 0:r4=x; 8 | 1:r2=x; 9 | 2:r2=x; 2:r4=y; 10 | 3:r2=y; 11 | } 12 | P0 | P1 | P2 | P3 ; 13 | lwz r1,0(r2) | li r1,2 | lwz r1,0(r2) | li r1,2 ; 14 | sync | stw r1,0(r2) | sync | stw r1,0(r2) ; 15 | li r3,1 | | li r3,1 | ; 16 | stw r3,0(r4) | | stw r3,0(r4) | ; 17 | exists 18 | (x=2 /\ y=2 /\ 0:r1=2 /\ 2:r1=2) 19 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/safe252.litmus: -------------------------------------------------------------------------------- 1 | PPC safe252 2 | "SyncdWR Fre LwSyncdWW Rfe SyncdRW Wse" 3 | Cycle=SyncdWR Fre LwSyncdWW Rfe SyncdRW Wse 4 | Relax= 5 | Safe=Fre Wse SyncdWR LwSyncdWW ACSyncdRW 6 | { 7 | 0:r2=x; 0:r4=y; 8 | 1:r2=y; 1:r4=z; 9 | 2:r2=z; 2:r4=x; 10 | } 11 | P0 | P1 | P2 ; 12 | li r1,1 | lwz r1,0(r2) | li r1,2 ; 13 | stw r1,0(r2) | sync | stw r1,0(r2) ; 14 | lwsync | li r3,1 | sync ; 15 | li r3,1 | stw r3,0(r4) | lwz r3,0(r4) ; 16 | stw r3,0(r4) | | ; 17 | exists 18 | (z=2 /\ 1:r1=1 /\ 2:r3=0) 19 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/safe457.litmus: -------------------------------------------------------------------------------- 1 | PPC safe457 2 | "SyncdWW Rfe SyncsRW Rfe LwSyncdRR Fre" 3 | Cycle=SyncdWW Rfe SyncsRW Rfe LwSyncdRR Fre 4 | Relax= 5 | Safe=Fre LwSyncdRR BCSyncsRW BCSyncdWW 6 | { 7 | 0:r2=x; 8 | 1:r2=x; 1:r4=y; 9 | 2:r2=y; 2:r4=x; 10 | } 11 | P0 | P1 | P2 ; 12 | lwz r1,0(r2) | lwz r1,0(r2) | li r1,1 ; 13 | sync | lwsync | stw r1,0(r2) ; 14 | li r3,2 | lwz r3,0(r4) | sync ; 15 | stw r3,0(r2) | | li r3,1 ; 16 | | | stw r3,0(r4) ; 17 | exists 18 | (x=2 /\ 0:r1=1 /\ 1:r1=2 /\ 1:r3=0) 19 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/safe468.litmus: -------------------------------------------------------------------------------- 1 | PPC safe468 2 | "SyncsWW Rfe SyncdRW Rfe LwSyncdRR Fre" 3 | Cycle=SyncsWW Rfe SyncdRW Rfe LwSyncdRR Fre 4 | Relax= 5 | Safe=Fre LwSyncdRR BCSyncsWW BCSyncdRW 6 | { 7 | 0:r2=y; 0:r4=x; 8 | 1:r2=x; 1:r4=y; 9 | 2:r2=y; 10 | } 11 | P0 | P1 | P2 ; 12 | lwz r1,0(r2) | lwz r1,0(r2) | li r1,1 ; 13 | sync | lwsync | stw r1,0(r2) ; 14 | li r3,1 | lwz r3,0(r4) | sync ; 15 | stw r3,0(r4) | | li r3,2 ; 16 | | | stw r3,0(r2) ; 17 | exists 18 | (y=2 /\ 0:r1=2 /\ 1:r1=1 /\ 1:r3=0) 19 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/safe470.litmus: -------------------------------------------------------------------------------- 1 | PPC safe470 2 | "SyncdWW Rfe SyncdRW Rfe LwSyncdRR Fre" 3 | Cycle=SyncdWW Rfe SyncdRW Rfe LwSyncdRR Fre 4 | Relax= 5 | Safe=Fre LwSyncdRR BCSyncdWW BCSyncdRW 6 | { 7 | 0:r2=x; 0:r4=y; 8 | 1:r2=y; 1:r4=z; 9 | 2:r2=z; 2:r4=x; 10 | } 11 | P0 | P1 | P2 ; 12 | lwz r1,0(r2) | lwz r1,0(r2) | li r1,1 ; 13 | sync | lwsync | stw r1,0(r2) ; 14 | li r3,1 | lwz r3,0(r4) | sync ; 15 | stw r3,0(r4) | | li r3,1 ; 16 | | | stw r3,0(r4) ; 17 | exists 18 | (0:r1=1 /\ 1:r1=1 /\ 1:r3=0) 19 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/safe478.litmus: -------------------------------------------------------------------------------- 1 | PPC safe478 2 | "SyncdWW Rfe SyncdRW Rfe LwSyncsRR Fre" 3 | Cycle=SyncdWW Rfe SyncdRW Rfe LwSyncsRR Fre 4 | Relax= 5 | Safe=Fre LwSyncsRR BCSyncdWW BCSyncdRW 6 | { 7 | 0:r2=x; 0:r4=y; 8 | 1:r2=y; 9 | 2:r2=y; 2:r4=x; 10 | } 11 | P0 | P1 | P2 ; 12 | lwz r1,0(r2) | lwz r1,0(r2) | li r1,2 ; 13 | sync | lwsync | stw r1,0(r2) ; 14 | li r3,1 | lwz r3,0(r2) | sync ; 15 | stw r3,0(r4) | | li r3,1 ; 16 | | | stw r3,0(r4) ; 17 | exists 18 | (y=2 /\ 0:r1=1 /\ 1:r1=1 /\ 1:r3=1) 19 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/safe491.litmus: -------------------------------------------------------------------------------- 1 | PPC safe491 2 | "SyncdWW Rfe LwSyncdRW Rfe SyncsRR Fre" 3 | Cycle=SyncdWW Rfe LwSyncdRW Rfe SyncsRR Fre 4 | Relax= 5 | Safe=Fre LwSyncdRW ACSyncsRR BCSyncdWW 6 | { 7 | 0:r2=x; 0:r4=y; 8 | 1:r2=y; 9 | 2:r2=y; 2:r4=x; 10 | } 11 | P0 | P1 | P2 ; 12 | lwz r1,0(r2) | lwz r1,0(r2) | li r1,2 ; 13 | lwsync | sync | stw r1,0(r2) ; 14 | li r3,1 | lwz r3,0(r2) | sync ; 15 | stw r3,0(r4) | | li r3,1 ; 16 | | | stw r3,0(r4) ; 17 | exists 18 | (y=2 /\ 0:r1=1 /\ 1:r1=1 /\ 1:r3=1) 19 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/safe497.litmus: -------------------------------------------------------------------------------- 1 | PPC safe497 2 | "LwSyncdWW Rfe SyncdRW Rfe SyncsRR Fre" 3 | Cycle=LwSyncdWW Rfe SyncdRW Rfe SyncsRR Fre 4 | Relax= 5 | Safe=Fre LwSyncdWW ACSyncsRR ACSyncdRW 6 | { 7 | 0:r2=x; 0:r4=y; 8 | 1:r2=y; 9 | 2:r2=y; 2:r4=x; 10 | } 11 | P0 | P1 | P2 ; 12 | lwz r1,0(r2) | lwz r1,0(r2) | li r1,2 ; 13 | sync | sync | stw r1,0(r2) ; 14 | li r3,1 | lwz r3,0(r2) | lwsync ; 15 | stw r3,0(r4) | | li r3,1 ; 16 | | | stw r3,0(r4) ; 17 | exists 18 | (y=2 /\ 0:r1=1 /\ 1:r1=1 /\ 1:r3=1) 19 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/safe525.litmus: -------------------------------------------------------------------------------- 1 | PPC safe525 2 | "SyncsWW Rfe LwSyncdRW Rfe SyncdRR Fre" 3 | Cycle=SyncsWW Rfe LwSyncdRW Rfe SyncdRR Fre 4 | Relax= 5 | Safe=Fre LwSyncdRW ACSyncdRR BCSyncsWW 6 | { 7 | 0:r2=y; 0:r4=x; 8 | 1:r2=x; 1:r4=y; 9 | 2:r2=y; 10 | } 11 | P0 | P1 | P2 ; 12 | lwz r1,0(r2) | lwz r1,0(r2) | li r1,1 ; 13 | lwsync | sync | stw r1,0(r2) ; 14 | li r3,1 | lwz r3,0(r4) | sync ; 15 | stw r3,0(r4) | | li r3,2 ; 16 | | | stw r3,0(r2) ; 17 | exists 18 | (y=2 /\ 0:r1=2 /\ 1:r1=1 /\ 1:r3=0) 19 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/safe527.litmus: -------------------------------------------------------------------------------- 1 | PPC safe527 2 | "SyncdWW Rfe LwSyncdRW Rfe SyncdRR Fre" 3 | Cycle=SyncdWW Rfe LwSyncdRW Rfe SyncdRR Fre 4 | Relax= 5 | Safe=Fre LwSyncdRW ACSyncdRR BCSyncdWW 6 | { 7 | 0:r2=x; 0:r4=y; 8 | 1:r2=y; 1:r4=z; 9 | 2:r2=z; 2:r4=x; 10 | } 11 | P0 | P1 | P2 ; 12 | lwz r1,0(r2) | lwz r1,0(r2) | li r1,1 ; 13 | lwsync | sync | stw r1,0(r2) ; 14 | li r3,1 | lwz r3,0(r4) | sync ; 15 | stw r3,0(r4) | | li r3,1 ; 16 | | | stw r3,0(r4) ; 17 | exists 18 | (0:r1=1 /\ 1:r1=1 /\ 1:r3=0) 19 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/safe531.litmus: -------------------------------------------------------------------------------- 1 | PPC safe531 2 | "SyncdWW Rfe LwSyncsRW Rfe SyncdRR Fre" 3 | Cycle=SyncdWW Rfe LwSyncsRW Rfe SyncdRR Fre 4 | Relax= 5 | Safe=Fre LwSyncsRW ACSyncdRR BCSyncdWW 6 | { 7 | 0:r2=x; 8 | 1:r2=x; 1:r4=y; 9 | 2:r2=y; 2:r4=x; 10 | } 11 | P0 | P1 | P2 ; 12 | lwz r1,0(r2) | lwz r1,0(r2) | li r1,1 ; 13 | lwsync | sync | stw r1,0(r2) ; 14 | li r3,2 | lwz r3,0(r4) | sync ; 15 | stw r3,0(r2) | | li r3,1 ; 16 | | | stw r3,0(r4) ; 17 | exists 18 | (x=2 /\ 0:r1=1 /\ 1:r1=2 /\ 1:r3=0) 19 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/safe538.litmus: -------------------------------------------------------------------------------- 1 | PPC safe538 2 | "LwSyncdWW Rfe SyncsRW Rfe SyncdRR Fre" 3 | Cycle=LwSyncdWW Rfe SyncsRW Rfe SyncdRR Fre 4 | Relax= 5 | Safe=Fre LwSyncdWW ACSyncsRW ACSyncdRR 6 | { 7 | 0:r2=x; 8 | 1:r2=x; 1:r4=y; 9 | 2:r2=y; 2:r4=x; 10 | } 11 | P0 | P1 | P2 ; 12 | lwz r1,0(r2) | lwz r1,0(r2) | li r1,1 ; 13 | sync | sync | stw r1,0(r2) ; 14 | li r3,2 | lwz r3,0(r4) | lwsync ; 15 | stw r3,0(r2) | | li r3,1 ; 16 | | | stw r3,0(r4) ; 17 | exists 18 | (x=2 /\ 0:r1=1 /\ 1:r1=2 /\ 1:r3=0) 19 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/safe551.litmus: -------------------------------------------------------------------------------- 1 | PPC safe551 2 | "LwSyncdWW Rfe SyncdRW Rfe SyncdRR Fre" 3 | Cycle=LwSyncdWW Rfe SyncdRW Rfe SyncdRR Fre 4 | Relax= 5 | Safe=Fre LwSyncdWW ACSyncdRW ACSyncdRR 6 | { 7 | 0:r2=x; 0:r4=y; 8 | 1:r2=y; 1:r4=z; 9 | 2:r2=z; 2:r4=x; 10 | } 11 | P0 | P1 | P2 ; 12 | lwz r1,0(r2) | lwz r1,0(r2) | li r1,1 ; 13 | sync | sync | stw r1,0(r2) ; 14 | li r3,1 | lwz r3,0(r4) | lwsync ; 15 | stw r3,0(r4) | | li r3,1 ; 16 | | | stw r3,0(r4) ; 17 | exists 18 | (0:r1=1 /\ 1:r1=1 /\ 1:r3=0) 19 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/safe554.litmus: -------------------------------------------------------------------------------- 1 | PPC safe554 2 | "LwSyncsWW Rfe SyncdRW Rfe SyncdRR Fre" 3 | Cycle=LwSyncsWW Rfe SyncdRW Rfe SyncdRR Fre 4 | Relax= 5 | Safe=Fre LwSyncsWW ACSyncdRW ACSyncdRR 6 | { 7 | 0:r2=y; 0:r4=x; 8 | 1:r2=x; 1:r4=y; 9 | 2:r2=y; 10 | } 11 | P0 | P1 | P2 ; 12 | lwz r1,0(r2) | lwz r1,0(r2) | li r1,1 ; 13 | sync | sync | stw r1,0(r2) ; 14 | li r3,1 | lwz r3,0(r4) | lwsync ; 15 | stw r3,0(r4) | | li r3,2 ; 16 | | | stw r3,0(r2) ; 17 | exists 18 | (y=2 /\ 0:r1=2 /\ 1:r1=1 /\ 1:r3=0) 19 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/aclwdrr035.litmus: -------------------------------------------------------------------------------- 1 | PPC aclwdrr035 2 | "Fre LwSyncdWW Wse LwSyncdWW Rfe LwSyncdRR" 3 | Cycle=Fre LwSyncdWW Wse LwSyncdWW Rfe LwSyncdRR 4 | Relax=ACLwSyncdRR 5 | Safe=Fre Wse LwSyncdWW 6 | { 7 | 0:r2=z; 0:r4=x; 8 | 1:r2=x; 1:r4=y; 9 | 2:r2=y; 2:r4=z; 10 | } 11 | P0 | P1 | P2 ; 12 | li r1,1 | li r1,2 | lwz r1,0(r2) ; 13 | stw r1,0(r2) | stw r1,0(r2) | lwsync ; 14 | lwsync | lwsync | lwz r3,0(r4) ; 15 | li r3,1 | li r3,1 | ; 16 | stw r3,0(r4) | stw r3,0(r4) | ; 17 | exists 18 | (x=2 /\ 2:r1=1 /\ 2:r3=0) 19 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/aclwdrr040.litmus: -------------------------------------------------------------------------------- 1 | PPC aclwdrr040 2 | "Fre SyncsWR Fre LwSyncdWW Rfe LwSyncdRR" 3 | Cycle=Fre SyncsWR Fre LwSyncdWW Rfe LwSyncdRR 4 | Relax=ACLwSyncdRR 5 | Safe=Fre SyncsWR LwSyncdWW 6 | { 7 | 0:r2=y; 8 | 1:r2=y; 1:r4=x; 9 | 2:r2=x; 2:r4=y; 10 | } 11 | P0 | P1 | P2 ; 12 | li r1,1 | li r1,2 | lwz r1,0(r2) ; 13 | stw r1,0(r2) | stw r1,0(r2) | lwsync ; 14 | sync | lwsync | lwz r3,0(r4) ; 15 | lwz r3,0(r2) | li r3,1 | ; 16 | | stw r3,0(r4) | ; 17 | exists 18 | (y=2 /\ 0:r3=1 /\ 2:r1=1 /\ 2:r3=0) 19 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/aclwdrr042.litmus: -------------------------------------------------------------------------------- 1 | PPC aclwdrr042 2 | "Fre SyncdWR Fre LwSyncsWW Rfe LwSyncdRR" 3 | Cycle=Fre SyncdWR Fre LwSyncsWW Rfe LwSyncdRR 4 | Relax=ACLwSyncdRR 5 | Safe=Fre SyncdWR LwSyncsWW 6 | { 7 | 0:r2=y; 0:r4=x; 8 | 1:r2=x; 9 | 2:r2=x; 2:r4=y; 10 | } 11 | P0 | P1 | P2 ; 12 | li r1,1 | li r1,1 | lwz r1,0(r2) ; 13 | stw r1,0(r2) | stw r1,0(r2) | lwsync ; 14 | sync | lwsync | lwz r3,0(r4) ; 15 | lwz r3,0(r4) | li r3,2 | ; 16 | | stw r3,0(r2) | ; 17 | exists 18 | (x=2 /\ 0:r3=0 /\ 2:r1=2 /\ 2:r3=0) 19 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/bclwdww009.litmus: -------------------------------------------------------------------------------- 1 | PPC bclwdww009 2 | "DpdR Fre LwSyncdWW Wse LwSyncdWW Rfe" 3 | Cycle=DpdR Fre LwSyncdWW Wse LwSyncdWW Rfe 4 | Relax=BCLwSyncdWW 5 | Safe=Fre Wse LwSyncdWW DpdR 6 | { 7 | 0:r2=x; 0:r4=y; 8 | 1:r2=y; 1:r4=z; 9 | 2:r2=z; 2:r5=x; 10 | } 11 | P0 | P1 | P2 ; 12 | li r1,1 | li r1,2 | lwz r1,0(r2) ; 13 | stw r1,0(r2) | stw r1,0(r2) | xor r3,r1,r1 ; 14 | lwsync | lwsync | lwzx r4,r3,r5 ; 15 | li r3,1 | li r3,1 | ; 16 | stw r3,0(r4) | stw r3,0(r4) | ; 17 | exists 18 | (y=2 /\ 2:r1=1 /\ 2:r4=0) 19 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/bclwdww010.litmus: -------------------------------------------------------------------------------- 1 | PPC bclwdww010 2 | "DpsR Fre LwSyncdWW Wse LwSyncdWW Rfe" 3 | Cycle=DpsR Fre LwSyncdWW Wse LwSyncdWW Rfe 4 | Relax=BCLwSyncdWW 5 | Safe=Fre Wse LwSyncdWW DpsR 6 | { 7 | 0:r2=y; 0:r4=x; 8 | 1:r2=x; 1:r4=y; 9 | 2:r2=y; 10 | } 11 | P0 | P1 | P2 ; 12 | li r1,2 | li r1,2 | lwz r1,0(r2) ; 13 | stw r1,0(r2) | stw r1,0(r2) | xor r3,r1,r1 ; 14 | lwsync | lwsync | lwzx r4,r3,r2 ; 15 | li r3,1 | li r3,1 | ; 16 | stw r3,0(r4) | stw r3,0(r4) | ; 17 | exists 18 | (x=2 /\ y=2 /\ 2:r1=1 /\ 2:r4=1) 19 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/rfe005.litmus: -------------------------------------------------------------------------------- 1 | PPC rfe005 2 | "DpdR Fre Rfe DpdW Wse Rfe" 3 | Cycle=DpdR Fre Rfe DpdW Wse Rfe 4 | Relax=Rfe 5 | Safe=Fre Wse DpdW DpdR 6 | { 7 | 0:r2=x; 0:r5=y; 8 | 1:r2=y; 9 | 2:r2=y; 2:r5=x; 10 | 3:r2=x; 11 | } 12 | P0 | P1 | P2 | P3 ; 13 | lwz r1,0(r2) | li r1,2 | lwz r1,0(r2) | li r1,1 ; 14 | xor r3,r1,r1 | stw r1,0(r2) | xor r3,r1,r1 | stw r1,0(r2) ; 15 | li r4,1 | | lwzx r4,r3,r5 | ; 16 | stwx r4,r3,r5 | | | ; 17 | exists 18 | (y=2 /\ 0:r1=1 /\ 2:r1=2 /\ 2:r4=0) 19 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/safe170.litmus: -------------------------------------------------------------------------------- 1 | PPC safe170 2 | "SyncdWW Rfe LwSyncdRR Fre LwSyncdWW Wse" 3 | Cycle=SyncdWW Rfe LwSyncdRR Fre LwSyncdWW Wse 4 | Relax= 5 | Safe=Fre Wse LwSyncdWW LwSyncdRR BCSyncdWW 6 | { 7 | 0:r2=x; 0:r4=y; 8 | 1:r2=y; 1:r4=z; 9 | 2:r2=z; 2:r4=x; 10 | } 11 | P0 | P1 | P2 ; 12 | lwz r1,0(r2) | li r1,1 | li r1,2 ; 13 | lwsync | stw r1,0(r2) | stw r1,0(r2) ; 14 | lwz r3,0(r4) | lwsync | sync ; 15 | | li r3,1 | li r3,1 ; 16 | | stw r3,0(r4) | stw r3,0(r4) ; 17 | exists 18 | (z=2 /\ 0:r1=1 /\ 0:r3=0) 19 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/safe172.litmus: -------------------------------------------------------------------------------- 1 | PPC safe172 2 | "SyncdWW Rfe LwSyncsRR Fre LwSyncdWW Wse" 3 | Cycle=SyncdWW Rfe LwSyncsRR Fre LwSyncdWW Wse 4 | Relax= 5 | Safe=Fre Wse LwSyncsRR LwSyncdWW BCSyncdWW 6 | { 7 | 0:r2=x; 8 | 1:r2=x; 1:r4=y; 9 | 2:r2=y; 2:r4=x; 10 | } 11 | P0 | P1 | P2 ; 12 | lwz r1,0(r2) | li r1,2 | li r1,2 ; 13 | lwsync | stw r1,0(r2) | stw r1,0(r2) ; 14 | lwz r3,0(r2) | lwsync | sync ; 15 | | li r3,1 | li r3,1 ; 16 | | stw r3,0(r4) | stw r3,0(r4) ; 17 | exists 18 | (x=2 /\ y=2 /\ 0:r1=1 /\ 0:r3=1) 19 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/aclwdrr022.litmus: -------------------------------------------------------------------------------- 1 | PPC aclwdrr022 2 | "Fre LwSyncdWW Wse SyncdWW Rfe LwSyncdRR" 3 | Cycle=Fre LwSyncdWW Wse SyncdWW Rfe LwSyncdRR 4 | Relax=ACLwSyncdRR 5 | Safe=Fre Wse SyncdWW LwSyncdWW 6 | { 7 | 0:r2=z; 0:r4=x; 8 | 1:r2=x; 1:r4=y; 9 | 2:r2=y; 2:r4=z; 10 | } 11 | P0 | P1 | P2 ; 12 | li r1,1 | li r1,2 | lwz r1,0(r2) ; 13 | stw r1,0(r2) | stw r1,0(r2) | lwsync ; 14 | lwsync | sync | lwz r3,0(r4) ; 15 | li r3,1 | li r3,1 | ; 16 | stw r3,0(r4) | stw r3,0(r4) | ; 17 | exists 18 | (x=2 /\ 2:r1=1 /\ 2:r3=0) 19 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/aclwdrr034.litmus: -------------------------------------------------------------------------------- 1 | PPC aclwdrr034 2 | "Fre SyncdWW Wse LwSyncdWW Rfe LwSyncdRR" 3 | Cycle=Fre SyncdWW Wse LwSyncdWW Rfe LwSyncdRR 4 | Relax=ACLwSyncdRR 5 | Safe=Fre Wse SyncdWW LwSyncdWW 6 | { 7 | 0:r2=z; 0:r4=x; 8 | 1:r2=x; 1:r4=y; 9 | 2:r2=y; 2:r4=z; 10 | } 11 | P0 | P1 | P2 ; 12 | li r1,1 | li r1,2 | lwz r1,0(r2) ; 13 | stw r1,0(r2) | stw r1,0(r2) | lwsync ; 14 | sync | lwsync | lwz r3,0(r4) ; 15 | li r3,1 | li r3,1 | ; 16 | stw r3,0(r4) | stw r3,0(r4) | ; 17 | exists 18 | (x=2 /\ 2:r1=1 /\ 2:r3=0) 19 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/aclwdrr039.litmus: -------------------------------------------------------------------------------- 1 | PPC aclwdrr039 2 | "Fre SyncdWR Fre LwSyncdWW Rfe LwSyncdRR" 3 | Cycle=Fre SyncdWR Fre LwSyncdWW Rfe LwSyncdRR 4 | Relax=ACLwSyncdRR 5 | Safe=Fre SyncdWR LwSyncdWW 6 | { 7 | 0:r2=z; 0:r4=x; 8 | 1:r2=x; 1:r4=y; 9 | 2:r2=y; 2:r4=z; 10 | } 11 | P0 | P1 | P2 ; 12 | li r1,1 | li r1,1 | lwz r1,0(r2) ; 13 | stw r1,0(r2) | stw r1,0(r2) | lwsync ; 14 | sync | lwsync | lwz r3,0(r4) ; 15 | lwz r3,0(r4) | li r3,1 | ; 16 | | stw r3,0(r4) | ; 17 | exists 18 | (0:r3=0 /\ 2:r1=1 /\ 2:r3=0) 19 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/bclwdww008.litmus: -------------------------------------------------------------------------------- 1 | PPC bclwdww008 2 | "LwSyncdRW Wse LwSyncdWW Wse LwSyncdWW Rfe" 3 | Cycle=LwSyncdRW Wse LwSyncdWW Wse LwSyncdWW Rfe 4 | Relax=BCLwSyncdWW 5 | Safe=Wse LwSyncdWW LwSyncdRW 6 | { 7 | 0:r2=x; 0:r4=y; 8 | 1:r2=y; 1:r4=z; 9 | 2:r2=z; 2:r4=x; 10 | } 11 | P0 | P1 | P2 ; 12 | li r1,2 | li r1,2 | lwz r1,0(r2) ; 13 | stw r1,0(r2) | stw r1,0(r2) | lwsync ; 14 | lwsync | lwsync | li r3,1 ; 15 | li r3,1 | li r3,1 | stw r3,0(r4) ; 16 | stw r3,0(r4) | stw r3,0(r4) | ; 17 | exists 18 | (x=2 /\ y=2 /\ 2:r1=1) 19 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/safe236.litmus: -------------------------------------------------------------------------------- 1 | PPC safe236 2 | "SyncdWW Rfe DpdR Fri Rfe SyncdRW Wse" 3 | Cycle=SyncdWW Rfe DpdR Fri Rfe SyncdRW Wse 4 | Relax= 5 | Safe=Fri Wse DpdR ACSyncdRW BCSyncdWW 6 | { 7 | 0:r2=x; 0:r5=y; 8 | 1:r2=y; 1:r4=z; 9 | 2:r2=z; 2:r4=x; 10 | } 11 | P0 | P1 | P2 ; 12 | lwz r1,0(r2) | lwz r1,0(r2) | li r1,2 ; 13 | xor r3,r1,r1 | sync | stw r1,0(r2) ; 14 | lwzx r4,r3,r5 | li r3,1 | sync ; 15 | li r6,1 | stw r3,0(r4) | li r3,1 ; 16 | stw r6,0(r5) | | stw r3,0(r4) ; 17 | exists 18 | (z=2 /\ 0:r1=1 /\ 0:r4=0 /\ 1:r1=1) 19 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/safe238.litmus: -------------------------------------------------------------------------------- 1 | PPC safe238 2 | "SyncdWW Rfe DpsR Fri Rfe SyncdRW Wse" 3 | Cycle=SyncdWW Rfe DpsR Fri Rfe SyncdRW Wse 4 | Relax= 5 | Safe=Fri Wse DpsR ACSyncdRW BCSyncdWW 6 | { 7 | 0:r2=x; 8 | 1:r2=x; 1:r4=y; 9 | 2:r2=y; 2:r4=x; 10 | } 11 | P0 | P1 | P2 ; 12 | lwz r1,0(r2) | lwz r1,0(r2) | li r1,2 ; 13 | xor r3,r1,r1 | sync | stw r1,0(r2) ; 14 | lwzx r4,r3,r2 | li r3,1 | sync ; 15 | li r5,2 | stw r3,0(r4) | li r3,1 ; 16 | stw r5,0(r2) | | stw r3,0(r4) ; 17 | exists 18 | (x=2 /\ y=2 /\ 0:r1=1 /\ 0:r4=1 /\ 1:r1=2) 19 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/safe482.litmus: -------------------------------------------------------------------------------- 1 | PPC safe482 2 | "SyncdWW Rfe DpdR Fri Rfe SyncsRR Fre" 3 | Cycle=SyncdWW Rfe DpdR Fri Rfe SyncsRR Fre 4 | Relax= 5 | Safe=Fri Fre DpdR ACSyncsRR BCSyncdWW 6 | { 7 | 0:r2=x; 0:r5=y; 8 | 1:r2=y; 9 | 2:r2=y; 2:r4=x; 10 | } 11 | P0 | P1 | P2 ; 12 | lwz r1,0(r2) | lwz r1,0(r2) | li r1,2 ; 13 | xor r3,r1,r1 | sync | stw r1,0(r2) ; 14 | lwzx r4,r3,r5 | lwz r3,0(r2) | sync ; 15 | li r6,1 | | li r3,1 ; 16 | stw r6,0(r5) | | stw r3,0(r4) ; 17 | exists 18 | (y=2 /\ 0:r1=1 /\ 0:r4=0 /\ 1:r1=1 /\ 1:r3=1) 19 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/safe506.litmus: -------------------------------------------------------------------------------- 1 | PPC safe506 2 | "SyncsWW Rfe DpdR Fri Rfe SyncdRR Fre" 3 | Cycle=SyncsWW Rfe DpdR Fri Rfe SyncdRR Fre 4 | Relax= 5 | Safe=Fri Fre DpdR ACSyncdRR BCSyncsWW 6 | { 7 | 0:r2=y; 0:r5=x; 8 | 1:r2=x; 1:r4=y; 9 | 2:r2=y; 10 | } 11 | P0 | P1 | P2 ; 12 | lwz r1,0(r2) | lwz r1,0(r2) | li r1,1 ; 13 | xor r3,r1,r1 | sync | stw r1,0(r2) ; 14 | lwzx r4,r3,r5 | lwz r3,0(r4) | sync ; 15 | li r6,1 | | li r3,2 ; 16 | stw r6,0(r5) | | stw r3,0(r2) ; 17 | exists 18 | (y=2 /\ 0:r1=2 /\ 0:r4=0 /\ 1:r1=1 /\ 1:r3=0) 19 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/safe508.litmus: -------------------------------------------------------------------------------- 1 | PPC safe508 2 | "SyncdWW Rfe DpdR Fri Rfe SyncdRR Fre" 3 | Cycle=SyncdWW Rfe DpdR Fri Rfe SyncdRR Fre 4 | Relax= 5 | Safe=Fri Fre DpdR ACSyncdRR BCSyncdWW 6 | { 7 | 0:r2=x; 0:r5=y; 8 | 1:r2=y; 1:r4=z; 9 | 2:r2=z; 2:r4=x; 10 | } 11 | P0 | P1 | P2 ; 12 | lwz r1,0(r2) | lwz r1,0(r2) | li r1,1 ; 13 | xor r3,r1,r1 | sync | stw r1,0(r2) ; 14 | lwzx r4,r3,r5 | lwz r3,0(r4) | sync ; 15 | li r6,1 | | li r3,1 ; 16 | stw r6,0(r5) | | stw r3,0(r4) ; 17 | exists 18 | (0:r1=1 /\ 0:r4=0 /\ 1:r1=1 /\ 1:r3=0) 19 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/safe511.litmus: -------------------------------------------------------------------------------- 1 | PPC safe511 2 | "SyncdWW Rfe DpsR Fri Rfe SyncdRR Fre" 3 | Cycle=SyncdWW Rfe DpsR Fri Rfe SyncdRR Fre 4 | Relax= 5 | Safe=Fri Fre DpsR ACSyncdRR BCSyncdWW 6 | { 7 | 0:r2=x; 8 | 1:r2=x; 1:r4=y; 9 | 2:r2=y; 2:r4=x; 10 | } 11 | P0 | P1 | P2 ; 12 | lwz r1,0(r2) | lwz r1,0(r2) | li r1,1 ; 13 | xor r3,r1,r1 | sync | stw r1,0(r2) ; 14 | lwzx r4,r3,r2 | lwz r3,0(r4) | sync ; 15 | li r5,2 | | li r3,1 ; 16 | stw r5,0(r2) | | stw r3,0(r4) ; 17 | exists 18 | (x=2 /\ 0:r1=1 /\ 0:r4=1 /\ 1:r1=2 /\ 1:r3=0) 19 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/bclwdww011.litmus: -------------------------------------------------------------------------------- 1 | PPC bclwdww011 2 | "LwSyncdRR Fre LwSyncdWW Wse LwSyncdWW Rfe" 3 | Cycle=LwSyncdRR Fre LwSyncdWW Wse LwSyncdWW Rfe 4 | Relax=BCLwSyncdWW 5 | Safe=Fre Wse LwSyncdWW LwSyncdRR 6 | { 7 | 0:r2=x; 0:r4=y; 8 | 1:r2=y; 1:r4=z; 9 | 2:r2=z; 2:r4=x; 10 | } 11 | P0 | P1 | P2 ; 12 | li r1,1 | li r1,2 | lwz r1,0(r2) ; 13 | stw r1,0(r2) | stw r1,0(r2) | lwsync ; 14 | lwsync | lwsync | lwz r3,0(r4) ; 15 | li r3,1 | li r3,1 | ; 16 | stw r3,0(r4) | stw r3,0(r4) | ; 17 | exists 18 | (y=2 /\ 2:r1=1 /\ 2:r3=0) 19 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/bclwdww012.litmus: -------------------------------------------------------------------------------- 1 | PPC bclwdww012 2 | "LwSyncsRR Fre LwSyncdWW Wse LwSyncdWW Rfe" 3 | Cycle=LwSyncsRR Fre LwSyncdWW Wse LwSyncdWW Rfe 4 | Relax=BCLwSyncdWW 5 | Safe=Fre Wse LwSyncsRR LwSyncdWW 6 | { 7 | 0:r2=y; 0:r4=x; 8 | 1:r2=x; 1:r4=y; 9 | 2:r2=y; 10 | } 11 | P0 | P1 | P2 ; 12 | li r1,2 | li r1,2 | lwz r1,0(r2) ; 13 | stw r1,0(r2) | stw r1,0(r2) | lwsync ; 14 | lwsync | lwsync | lwz r3,0(r2) ; 15 | li r3,1 | li r3,1 | ; 16 | stw r3,0(r4) | stw r3,0(r4) | ; 17 | exists 18 | (x=2 /\ y=2 /\ 2:r1=1 /\ 2:r3=1) 19 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/safe233.litmus: -------------------------------------------------------------------------------- 1 | PPC safe233 2 | "Rfe SyncdRR Fre Rfe SyncdRW Wse" 3 | Cycle=Rfe SyncdRR Fre Rfe SyncdRW Wse 4 | Relax= 5 | Safe=Fre Wse ACSyncdRW ACSyncdRR 6 | { 7 | 0:r2=y; 0:r4=x; 8 | 1:r2=x; 9 | 2:r2=x; 2:r4=y; 10 | 3:r2=y; 11 | } 12 | P0 | P1 | P2 | P3 ; 13 | lwz r1,0(r2) | li r1,1 | lwz r1,0(r2) | li r1,2 ; 14 | sync | stw r1,0(r2) | sync | stw r1,0(r2) ; 15 | lwz r3,0(r4) | | li r3,1 | ; 16 | | | stw r3,0(r4) | ; 17 | exists 18 | (y=2 /\ 0:r1=2 /\ 0:r3=0 /\ 2:r1=1) 19 | -------------------------------------------------------------------------------- /memsynth/strategy/strategy.rkt: -------------------------------------------------------------------------------- 1 | #lang racket 2 | 3 | (require racket/generic) 4 | (provide (all-defined-out)) 5 | 6 | ; A strategy defines an approach to concretizing a litmus test sketch. 7 | (define-generics strategy 8 | ; Return the next topology from this strategy. The topology should be treated 9 | ; as an opaque object and is passed to instantiate-topology to create a set of 10 | ; litmus test bounds. 11 | (next-topology strategy) 12 | 13 | ; Given a litmus test sketch and a topology returned from next-topology, 14 | ; create a set of bounds describing a litmus test to solve for. 15 | (instantiate-topology strategy sketch topology)) 16 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/posrr004.litmus: -------------------------------------------------------------------------------- 1 | PPC posrr004 2 | "Fre SyncdWW Rfe SyncdRW Rfe DpdR PosRR" 3 | Cycle=Fre SyncdWW Rfe SyncdRW Rfe DpdR PosRR 4 | Relax=PosRR 5 | Safe=Fre DpdR BCSyncdWW BCSyncdRW 6 | { 7 | 0:r2=z; 0:r4=x; 8 | 1:r2=x; 1:r4=y; 9 | 2:r2=y; 2:r5=z; 10 | } 11 | P0 | P1 | P2 ; 12 | li r1,1 | lwz r1,0(r2) | lwz r1,0(r2) ; 13 | stw r1,0(r2) | sync | xor r3,r1,r1 ; 14 | sync | li r3,1 | lwzx r4,r3,r5 ; 15 | li r3,1 | stw r3,0(r4) | lwz r6,0(r5) ; 16 | stw r3,0(r4) | | ; 17 | exists 18 | (1:r1=1 /\ 2:r1=1 /\ 2:r4=0 /\ 2:r6=0) 19 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/posrr011.litmus: -------------------------------------------------------------------------------- 1 | PPC posrr011 2 | "DpdR Fre SyncdWW Rfe SyncdRW Rfe PosRR" 3 | Cycle=DpdR Fre SyncdWW Rfe SyncdRW Rfe PosRR 4 | Relax=PosRR 5 | Safe=Fre DpdR BCSyncdWW BCSyncdRW 6 | { 7 | 0:r2=x; 0:r4=y; 8 | 1:r2=y; 1:r4=z; 9 | 2:r2=z; 2:r6=x; 10 | } 11 | P0 | P1 | P2 ; 12 | li r1,1 | lwz r1,0(r2) | lwz r1,0(r2) ; 13 | stw r1,0(r2) | sync | lwz r3,0(r2) ; 14 | sync | li r3,1 | xor r4,r3,r3 ; 15 | li r3,1 | stw r3,0(r4) | lwzx r5,r4,r6 ; 16 | stw r3,0(r4) | | ; 17 | exists 18 | (1:r1=1 /\ 2:r1=1 /\ 2:r3=1 /\ 2:r5=0) 19 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/aclwsrr005.litmus: -------------------------------------------------------------------------------- 1 | PPC aclwsrr005 2 | "DpdR Fre SyncdWW Wse SyncdWW Rfe LwSyncsRR" 3 | Cycle=DpdR Fre SyncdWW Wse SyncdWW Rfe LwSyncsRR 4 | Relax=ACLwSyncsRR 5 | Safe=Fre Wse SyncdWW DpdR 6 | { 7 | 0:r2=x; 0:r4=y; 8 | 1:r2=y; 1:r4=z; 9 | 2:r2=z; 2:r6=x; 10 | } 11 | P0 | P1 | P2 ; 12 | li r1,1 | li r1,2 | lwz r1,0(r2) ; 13 | stw r1,0(r2) | stw r1,0(r2) | lwsync ; 14 | sync | sync | lwz r3,0(r2) ; 15 | li r3,1 | li r3,1 | xor r4,r3,r3 ; 16 | stw r3,0(r4) | stw r3,0(r4) | lwzx r5,r4,r6 ; 17 | exists 18 | (y=2 /\ 2:r1=1 /\ 2:r3=1 /\ 2:r5=0) 19 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/podrwposwr029.litmus: -------------------------------------------------------------------------------- 1 | PPC podrwposwr029 2 | "Fre SyncdWR Fre SyncdWW Rfe PodRW PosWR" 3 | Cycle=Fre SyncdWR Fre SyncdWW Rfe PodRW PosWR 4 | Relax=[PodRW,PosWR] 5 | Safe=Fre SyncdWR BCSyncdWW 6 | { 7 | 0:r2=z; 0:r4=x; 8 | 1:r2=x; 1:r4=y; 9 | 2:r2=y; 2:r4=z; 10 | } 11 | P0 | P1 | P2 ; 12 | li r1,2 | li r1,1 | lwz r1,0(r2) ; 13 | stw r1,0(r2) | stw r1,0(r2) | li r3,1 ; 14 | sync | sync | stw r3,0(r4) ; 15 | lwz r3,0(r4) | li r3,1 | lwz r5,0(r4) ; 16 | | stw r3,0(r4) | ; 17 | exists 18 | (z=2 /\ 0:r3=0 /\ 2:r1=1 /\ 2:r5=1) 19 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/podrwposwr046.litmus: -------------------------------------------------------------------------------- 1 | PPC podrwposwr046 2 | "Fre SyncdWW Wse SyncdWW Rfe PodRW PosWR" 3 | Cycle=Fre SyncdWW Wse SyncdWW Rfe PodRW PosWR 4 | Relax=[PodRW,PosWR] 5 | Safe=Fre Wse SyncdWW BCSyncdWW 6 | { 7 | 0:r2=z; 0:r4=x; 8 | 1:r2=x; 1:r4=y; 9 | 2:r2=y; 2:r4=z; 10 | } 11 | P0 | P1 | P2 ; 12 | li r1,2 | li r1,2 | lwz r1,0(r2) ; 13 | stw r1,0(r2) | stw r1,0(r2) | li r3,1 ; 14 | sync | sync | stw r3,0(r4) ; 15 | li r3,1 | li r3,1 | lwz r5,0(r4) ; 16 | stw r3,0(r4) | stw r3,0(r4) | ; 17 | exists 18 | (x=2 /\ z=2 /\ 2:r1=1 /\ 2:r5=1) 19 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/podrwposwr058.litmus: -------------------------------------------------------------------------------- 1 | PPC podrwposwr058 2 | "Fre SyncdWW Rfe SyncdRW Rfe PodRW PosWR" 3 | Cycle=Fre SyncdWW Rfe SyncdRW Rfe PodRW PosWR 4 | Relax=[PodRW,PosWR] 5 | Safe=Fre BCSyncdWW BCSyncdRW 6 | { 7 | 0:r2=z; 0:r4=x; 8 | 1:r2=x; 1:r4=y; 9 | 2:r2=y; 2:r4=z; 10 | } 11 | P0 | P1 | P2 ; 12 | li r1,2 | lwz r1,0(r2) | lwz r1,0(r2) ; 13 | stw r1,0(r2) | sync | li r3,1 ; 14 | sync | li r3,1 | stw r3,0(r4) ; 15 | li r3,1 | stw r3,0(r4) | lwz r5,0(r4) ; 16 | stw r3,0(r4) | | ; 17 | exists 18 | (z=2 /\ 1:r1=1 /\ 2:r1=1 /\ 2:r5=1) 19 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/safe295.litmus: -------------------------------------------------------------------------------- 1 | PPC safe295 2 | "Rfe SyncdRW Rfe SyncdRW Rfe SyncdRW Wse" 3 | Cycle=Rfe SyncdRW Rfe SyncdRW Rfe SyncdRW Wse 4 | Relax= 5 | Safe=Wse ACSyncdRW 6 | { 7 | 0:r2=z; 0:r4=x; 8 | 1:r2=x; 1:r4=y; 9 | 2:r2=y; 2:r4=z; 10 | 3:r2=z; 11 | } 12 | P0 | P1 | P2 | P3 ; 13 | lwz r1,0(r2) | lwz r1,0(r2) | lwz r1,0(r2) | li r1,2 ; 14 | sync | sync | sync | stw r1,0(r2) ; 15 | li r3,1 | li r3,1 | li r3,1 | ; 16 | stw r3,0(r4) | stw r3,0(r4) | stw r3,0(r4) | ; 17 | exists 18 | (z=2 /\ 0:r1=2 /\ 1:r1=1 /\ 2:r1=1) 19 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/safe280.litmus: -------------------------------------------------------------------------------- 1 | PPC safe280 2 | "Rfe SyncdRW Rfe SyncsRW Rfe SyncdRW Wse" 3 | Cycle=Rfe SyncdRW Rfe SyncsRW Rfe SyncdRW Wse 4 | Relax= 5 | Safe=Wse ACSyncsRW ACSyncdRW 6 | { 7 | 0:r2=y; 0:r4=x; 8 | 1:r2=x; 9 | 2:r2=x; 2:r4=y; 10 | 3:r2=y; 11 | } 12 | P0 | P1 | P2 | P3 ; 13 | lwz r1,0(r2) | lwz r1,0(r2) | lwz r1,0(r2) | li r1,2 ; 14 | sync | sync | sync | stw r1,0(r2) ; 15 | li r3,1 | li r3,2 | li r3,1 | ; 16 | stw r3,0(r4) | stw r3,0(r2) | stw r3,0(r4) | ; 17 | exists 18 | (x=2 /\ y=2 /\ 0:r1=2 /\ 1:r1=1 /\ 2:r1=2) 19 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/safe361.litmus: -------------------------------------------------------------------------------- 1 | PPC safe361 2 | "Rfe SyncsRR Fre SyncdWR Fre SyncdWR Fre" 3 | Cycle=Rfe SyncsRR Fre SyncdWR Fre SyncdWR Fre 4 | Relax= 5 | Safe=Fre SyncdWR ACSyncsRR 6 | { 7 | 0:r2=y; 8 | 1:r2=y; 1:r4=x; 9 | 2:r2=x; 2:r4=y; 10 | 3:r2=y; 11 | } 12 | P0 | P1 | P2 | P3 ; 13 | lwz r1,0(r2) | li r1,2 | li r1,1 | li r1,1 ; 14 | sync | stw r1,0(r2) | stw r1,0(r2) | stw r1,0(r2) ; 15 | lwz r3,0(r2) | sync | sync | ; 16 | | lwz r3,0(r4) | lwz r3,0(r4) | ; 17 | exists 18 | (y=2 /\ 0:r1=1 /\ 0:r3=1 /\ 1:r3=0 /\ 2:r3=0) 19 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/posrr001.litmus: -------------------------------------------------------------------------------- 1 | PPC posrr001 2 | "Fre SyncdWW Rfe SyncdRW Rfe PosRR DpdR PosRR" 3 | Cycle=Fre SyncdWW Rfe SyncdRW Rfe PosRR DpdR PosRR 4 | Relax=PosRR 5 | Safe=Fre DpdR BCSyncdWW BCSyncdRW 6 | { 7 | 0:r2=z; 0:r4=x; 8 | 1:r2=x; 1:r4=y; 9 | 2:r2=y; 2:r6=z; 10 | } 11 | P0 | P1 | P2 ; 12 | li r1,1 | lwz r1,0(r2) | lwz r1,0(r2) ; 13 | stw r1,0(r2) | sync | lwz r3,0(r2) ; 14 | sync | li r3,1 | xor r4,r3,r3 ; 15 | li r3,1 | stw r3,0(r4) | lwzx r5,r4,r6 ; 16 | stw r3,0(r4) | | lwz r7,0(r6) ; 17 | exists 18 | (1:r1=1 /\ 2:r1=1 /\ 2:r3=1 /\ 2:r5=0 /\ 2:r7=0) 19 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/safe226.litmus: -------------------------------------------------------------------------------- 1 | PPC safe226 2 | "SyncdWR Fre SyncdWR Fre Rfe SyncdRW Wse" 3 | Cycle=SyncdWR Fre SyncdWR Fre Rfe SyncdRW Wse 4 | Relax= 5 | Safe=Fre Wse SyncdWR ACSyncdRW 6 | { 7 | 0:r2=x; 0:r4=y; 8 | 1:r2=y; 9 | 2:r2=y; 2:r4=z; 10 | 3:r2=z; 3:r4=x; 11 | } 12 | P0 | P1 | P2 | P3 ; 13 | li r1,1 | li r1,1 | lwz r1,0(r2) | li r1,2 ; 14 | stw r1,0(r2) | stw r1,0(r2) | sync | stw r1,0(r2) ; 15 | sync | | li r3,1 | sync ; 16 | lwz r3,0(r4) | | stw r3,0(r4) | lwz r3,0(r4) ; 17 | exists 18 | (z=2 /\ 0:r3=0 /\ 2:r1=1 /\ 3:r3=0) 19 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/safe284.litmus: -------------------------------------------------------------------------------- 1 | PPC safe284 2 | "SyncdWR Fre Rfe SyncdRW Rfe SyncdRW Wse" 3 | Cycle=SyncdWR Fre Rfe SyncdRW Rfe SyncdRW Wse 4 | Relax= 5 | Safe=Fre Wse SyncdWR ACSyncdRW 6 | { 7 | 0:r2=x; 0:r4=y; 8 | 1:r2=y; 1:r4=z; 9 | 2:r2=z; 2:r4=x; 10 | 3:r2=x; 11 | } 12 | P0 | P1 | P2 | P3 ; 13 | lwz r1,0(r2) | lwz r1,0(r2) | li r1,2 | li r1,1 ; 14 | sync | sync | stw r1,0(r2) | stw r1,0(r2) ; 15 | li r3,1 | li r3,1 | sync | ; 16 | stw r3,0(r4) | stw r3,0(r4) | lwz r3,0(r4) | ; 17 | exists 18 | (z=2 /\ 0:r1=1 /\ 1:r1=1 /\ 2:r3=0) 19 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/safe362.litmus: -------------------------------------------------------------------------------- 1 | PPC safe362 2 | "Rfe SyncdRR Fre SyncdWR Fre SyncdWR Fre" 3 | Cycle=Rfe SyncdRR Fre SyncdWR Fre SyncdWR Fre 4 | Relax= 5 | Safe=Fre SyncdWR ACSyncdRR 6 | { 7 | 0:r2=z; 0:r4=x; 8 | 1:r2=x; 1:r4=y; 9 | 2:r2=y; 2:r4=z; 10 | 3:r2=z; 11 | } 12 | P0 | P1 | P2 | P3 ; 13 | lwz r1,0(r2) | li r1,1 | li r1,1 | li r1,1 ; 14 | sync | stw r1,0(r2) | stw r1,0(r2) | stw r1,0(r2) ; 15 | lwz r3,0(r4) | sync | sync | ; 16 | | lwz r3,0(r4) | lwz r3,0(r4) | ; 17 | exists 18 | (0:r1=1 /\ 0:r3=0 /\ 1:r3=0 /\ 2:r3=0) 19 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/safe501.litmus: -------------------------------------------------------------------------------- 1 | PPC safe501 2 | "Rfe SyncdRW Rfe SyncdRW Rfe SyncsRR Fre" 3 | Cycle=Rfe SyncdRW Rfe SyncdRW Rfe SyncsRR Fre 4 | Relax= 5 | Safe=Fre ACSyncsRR ACSyncdRW 6 | { 7 | 0:r2=y; 0:r4=x; 8 | 1:r2=x; 1:r4=y; 9 | 2:r2=y; 10 | 3:r2=y; 11 | } 12 | P0 | P1 | P2 | P3 ; 13 | lwz r1,0(r2) | lwz r1,0(r2) | lwz r1,0(r2) | li r1,2 ; 14 | sync | sync | sync | stw r1,0(r2) ; 15 | li r3,1 | li r3,1 | lwz r3,0(r2) | ; 16 | stw r3,0(r4) | stw r3,0(r4) | | ; 17 | exists 18 | (y=2 /\ 0:r1=2 /\ 1:r1=1 /\ 2:r1=1 /\ 2:r3=1) 19 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/safe558.litmus: -------------------------------------------------------------------------------- 1 | PPC safe558 2 | "Rfe SyncdRW Rfe SyncdRW Rfe SyncdRR Fre" 3 | Cycle=Rfe SyncdRW Rfe SyncdRW Rfe SyncdRR Fre 4 | Relax= 5 | Safe=Fre ACSyncdRW ACSyncdRR 6 | { 7 | 0:r2=z; 0:r4=x; 8 | 1:r2=x; 1:r4=y; 9 | 2:r2=y; 2:r4=z; 10 | 3:r2=z; 11 | } 12 | P0 | P1 | P2 | P3 ; 13 | lwz r1,0(r2) | lwz r1,0(r2) | lwz r1,0(r2) | li r1,1 ; 14 | sync | sync | sync | stw r1,0(r2) ; 15 | li r3,1 | li r3,1 | lwz r3,0(r4) | ; 16 | stw r3,0(r4) | stw r3,0(r4) | | ; 17 | exists 18 | (0:r1=1 /\ 1:r1=1 /\ 2:r1=1 /\ 2:r3=0) 19 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/safe228.litmus: -------------------------------------------------------------------------------- 1 | PPC safe228 2 | "SyncdWR Fre SyncsWR Fre Rfe SyncdRW Wse" 3 | Cycle=SyncdWR Fre SyncsWR Fre Rfe SyncdRW Wse 4 | Relax= 5 | Safe=Fre Wse SyncsWR SyncdWR ACSyncdRW 6 | { 7 | 0:r2=x; 8 | 1:r2=x; 9 | 2:r2=x; 2:r4=y; 10 | 3:r2=y; 3:r4=x; 11 | } 12 | P0 | P1 | P2 | P3 ; 13 | li r1,1 | li r1,2 | lwz r1,0(r2) | li r1,2 ; 14 | stw r1,0(r2) | stw r1,0(r2) | sync | stw r1,0(r2) ; 15 | sync | | li r3,1 | sync ; 16 | lwz r3,0(r2) | | stw r3,0(r4) | lwz r3,0(r4) ; 17 | exists 18 | (x=2 /\ y=2 /\ 0:r3=1 /\ 2:r1=2 /\ 3:r3=0) 19 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/safe368.litmus: -------------------------------------------------------------------------------- 1 | PPC safe368 2 | "Rfe SyncdRR Fre SyncsWR Fre SyncdWR Fre" 3 | Cycle=Rfe SyncdRR Fre SyncsWR Fre SyncdWR Fre 4 | Relax= 5 | Safe=Fre SyncsWR SyncdWR ACSyncdRR 6 | { 7 | 0:r2=y; 0:r4=x; 8 | 1:r2=x; 9 | 2:r2=x; 2:r4=y; 10 | 3:r2=y; 11 | } 12 | P0 | P1 | P2 | P3 ; 13 | lwz r1,0(r2) | li r1,1 | li r1,2 | li r1,1 ; 14 | sync | stw r1,0(r2) | stw r1,0(r2) | stw r1,0(r2) ; 15 | lwz r3,0(r4) | sync | sync | ; 16 | | lwz r3,0(r2) | lwz r3,0(r4) | ; 17 | exists 18 | (x=2 /\ 0:r1=1 /\ 0:r3=0 /\ 1:r3=1 /\ 2:r3=0) 19 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/safe385.litmus: -------------------------------------------------------------------------------- 1 | PPC safe385 2 | "Rfe SyncdRW Rfe SyncsRR Fre SyncdWR Fre" 3 | Cycle=Rfe SyncdRW Rfe SyncsRR Fre SyncdWR Fre 4 | Relax= 5 | Safe=Fre SyncdWR ACSyncsRR ACSyncdRW 6 | { 7 | 0:r2=y; 0:r4=x; 8 | 1:r2=x; 9 | 2:r2=x; 2:r4=y; 10 | 3:r2=y; 11 | } 12 | P0 | P1 | P2 | P3 ; 13 | lwz r1,0(r2) | lwz r1,0(r2) | li r1,2 | li r1,1 ; 14 | sync | sync | stw r1,0(r2) | stw r1,0(r2) ; 15 | li r3,1 | lwz r3,0(r2) | sync | ; 16 | stw r3,0(r4) | | lwz r3,0(r4) | ; 17 | exists 18 | (x=2 /\ 0:r1=1 /\ 1:r1=1 /\ 1:r3=1 /\ 2:r3=0) 19 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/safe389.litmus: -------------------------------------------------------------------------------- 1 | PPC safe389 2 | "SyncsWR Fre Rfe SyncdRR Fre SyncdWR Fre" 3 | Cycle=SyncsWR Fre Rfe SyncdRR Fre SyncdWR Fre 4 | Relax= 5 | Safe=Fre SyncsWR SyncdWR ACSyncdRR 6 | { 7 | 0:r2=y; 0:r4=x; 8 | 1:r2=x; 1:r4=y; 9 | 2:r2=y; 10 | 3:r2=y; 11 | } 12 | P0 | P1 | P2 | P3 ; 13 | lwz r1,0(r2) | li r1,1 | li r1,1 | li r1,2 ; 14 | sync | stw r1,0(r2) | stw r1,0(r2) | stw r1,0(r2) ; 15 | lwz r3,0(r4) | sync | sync | ; 16 | | lwz r3,0(r4) | lwz r3,0(r2) | ; 17 | exists 18 | (y=2 /\ 0:r1=2 /\ 0:r3=0 /\ 1:r3=0 /\ 2:r3=1) 19 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/safe398.litmus: -------------------------------------------------------------------------------- 1 | PPC safe398 2 | "Rfe SyncsRW Rfe SyncdRR Fre SyncdWR Fre" 3 | Cycle=Rfe SyncsRW Rfe SyncdRR Fre SyncdWR Fre 4 | Relax= 5 | Safe=Fre SyncdWR ACSyncsRW ACSyncdRR 6 | { 7 | 0:r2=y; 8 | 1:r2=y; 1:r4=x; 9 | 2:r2=x; 2:r4=y; 10 | 3:r2=y; 11 | } 12 | P0 | P1 | P2 | P3 ; 13 | lwz r1,0(r2) | lwz r1,0(r2) | li r1,1 | li r1,1 ; 14 | sync | sync | stw r1,0(r2) | stw r1,0(r2) ; 15 | li r3,2 | lwz r3,0(r4) | sync | ; 16 | stw r3,0(r2) | | lwz r3,0(r4) | ; 17 | exists 18 | (y=2 /\ 0:r1=1 /\ 1:r1=2 /\ 1:r3=0 /\ 2:r3=0) 19 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/safe441.litmus: -------------------------------------------------------------------------------- 1 | PPC safe441 2 | "Rfe SyncdRW Rfe SyncdRR Fre SyncsWR Fre" 3 | Cycle=Rfe SyncdRW Rfe SyncdRR Fre SyncsWR Fre 4 | Relax= 5 | Safe=Fre SyncsWR ACSyncdRW ACSyncdRR 6 | { 7 | 0:r2=y; 0:r4=x; 8 | 1:r2=x; 1:r4=y; 9 | 2:r2=y; 10 | 3:r2=y; 11 | } 12 | P0 | P1 | P2 | P3 ; 13 | lwz r1,0(r2) | lwz r1,0(r2) | li r1,1 | li r1,2 ; 14 | sync | sync | stw r1,0(r2) | stw r1,0(r2) ; 15 | li r3,1 | lwz r3,0(r4) | sync | ; 16 | stw r3,0(r4) | | lwz r3,0(r2) | ; 17 | exists 18 | (y=2 /\ 0:r1=2 /\ 1:r1=1 /\ 1:r3=0 /\ 2:r3=1) 19 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/aclwdrr018.litmus: -------------------------------------------------------------------------------- 1 | PPC aclwdrr018 2 | "Fre SyncdWR Fre SyncdWR Fre Rfe LwSyncdRR" 3 | Cycle=Fre SyncdWR Fre SyncdWR Fre Rfe LwSyncdRR 4 | Relax=ACLwSyncdRR 5 | Safe=Fre SyncdWR 6 | { 7 | 0:r2=z; 0:r4=x; 8 | 1:r2=x; 1:r4=y; 9 | 2:r2=y; 10 | 3:r2=y; 3:r4=z; 11 | } 12 | P0 | P1 | P2 | P3 ; 13 | li r1,1 | li r1,1 | li r1,1 | lwz r1,0(r2) ; 14 | stw r1,0(r2) | stw r1,0(r2) | stw r1,0(r2) | lwsync ; 15 | sync | sync | | lwz r3,0(r4) ; 16 | lwz r3,0(r4) | lwz r3,0(r4) | | ; 17 | exists 18 | (0:r3=0 /\ 1:r3=0 /\ 3:r1=1 /\ 3:r3=0) 19 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/safe274.litmus: -------------------------------------------------------------------------------- 1 | PPC safe274 2 | "SyncdWR Fre Rfe SyncsRW Rfe SyncdRW Wse" 3 | Cycle=SyncdWR Fre Rfe SyncsRW Rfe SyncdRW Wse 4 | Relax= 5 | Safe=Fre Wse SyncdWR ACSyncsRW ACSyncdRW 6 | { 7 | 0:r2=x; 8 | 1:r2=x; 1:r4=y; 9 | 2:r2=y; 2:r4=x; 10 | 3:r2=x; 11 | } 12 | P0 | P1 | P2 | P3 ; 13 | lwz r1,0(r2) | lwz r1,0(r2) | li r1,2 | li r1,1 ; 14 | sync | sync | stw r1,0(r2) | stw r1,0(r2) ; 15 | li r3,2 | li r3,1 | sync | ; 16 | stw r3,0(r2) | stw r3,0(r4) | lwz r3,0(r4) | ; 17 | exists 18 | (x=2 /\ y=2 /\ 0:r1=1 /\ 1:r1=2 /\ 2:r3=0) 19 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/safe400.litmus: -------------------------------------------------------------------------------- 1 | PPC safe400 2 | "Rfe SyncdRW Rfe SyncdRR Fre SyncdWR Fre" 3 | Cycle=Rfe SyncdRW Rfe SyncdRR Fre SyncdWR Fre 4 | Relax= 5 | Safe=Fre SyncdWR ACSyncdRW ACSyncdRR 6 | { 7 | 0:r2=z; 0:r4=x; 8 | 1:r2=x; 1:r4=y; 9 | 2:r2=y; 2:r4=z; 10 | 3:r2=z; 11 | } 12 | P0 | P1 | P2 | P3 ; 13 | lwz r1,0(r2) | lwz r1,0(r2) | li r1,1 | li r1,1 ; 14 | sync | sync | stw r1,0(r2) | stw r1,0(r2) ; 15 | li r3,1 | lwz r3,0(r4) | sync | ; 16 | stw r3,0(r4) | | lwz r3,0(r4) | ; 17 | exists 18 | (0:r1=1 /\ 1:r1=1 /\ 1:r3=0 /\ 2:r3=0) 19 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/safe541.litmus: -------------------------------------------------------------------------------- 1 | PPC safe541 2 | "Rfe SyncdRW Rfe SyncsRW Rfe SyncdRR Fre" 3 | Cycle=Rfe SyncdRW Rfe SyncsRW Rfe SyncdRR Fre 4 | Relax= 5 | Safe=Fre ACSyncsRW ACSyncdRW ACSyncdRR 6 | { 7 | 0:r2=y; 0:r4=x; 8 | 1:r2=x; 9 | 2:r2=x; 2:r4=y; 10 | 3:r2=y; 11 | } 12 | P0 | P1 | P2 | P3 ; 13 | lwz r1,0(r2) | lwz r1,0(r2) | lwz r1,0(r2) | li r1,1 ; 14 | sync | sync | sync | stw r1,0(r2) ; 15 | li r3,1 | li r3,2 | lwz r3,0(r4) | ; 16 | stw r3,0(r4) | stw r3,0(r2) | | ; 17 | exists 18 | (x=2 /\ 0:r1=1 /\ 1:r1=1 /\ 2:r1=2 /\ 2:r3=0) 19 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/safe556.litmus: -------------------------------------------------------------------------------- 1 | PPC safe556 2 | "Rfe SyncsRW Rfe SyncdRW Rfe SyncdRR Fre" 3 | Cycle=Rfe SyncsRW Rfe SyncdRW Rfe SyncdRR Fre 4 | Relax= 5 | Safe=Fre ACSyncsRW ACSyncdRW ACSyncdRR 6 | { 7 | 0:r2=y; 8 | 1:r2=y; 1:r4=x; 9 | 2:r2=x; 2:r4=y; 10 | 3:r2=y; 11 | } 12 | P0 | P1 | P2 | P3 ; 13 | lwz r1,0(r2) | lwz r1,0(r2) | lwz r1,0(r2) | li r1,1 ; 14 | sync | sync | sync | stw r1,0(r2) ; 15 | li r3,2 | li r3,1 | lwz r3,0(r4) | ; 16 | stw r3,0(r2) | stw r3,0(r4) | | ; 17 | exists 18 | (y=2 /\ 0:r1=1 /\ 1:r1=2 /\ 2:r1=1 /\ 2:r3=0) 19 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/safe566.litmus: -------------------------------------------------------------------------------- 1 | PPC safe566 2 | "Rfe SyncdRW Rfe SyncdRW Rfe SyncdRW Rfe SyncdRW" 3 | Cycle=Rfe SyncdRW Rfe SyncdRW Rfe SyncdRW Rfe SyncdRW 4 | Relax= 5 | Safe=ACSyncdRW 6 | { 7 | 0:r2=a; 0:r4=x; 8 | 1:r2=x; 1:r4=y; 9 | 2:r2=y; 2:r4=z; 10 | 3:r2=z; 3:r4=a; 11 | } 12 | P0 | P1 | P2 | P3 ; 13 | lwz r1,0(r2) | lwz r1,0(r2) | lwz r1,0(r2) | lwz r1,0(r2) ; 14 | sync | sync | sync | sync ; 15 | li r3,1 | li r3,1 | li r3,1 | li r3,1 ; 16 | stw r3,0(r4) | stw r3,0(r4) | stw r3,0(r4) | stw r3,0(r4) ; 17 | exists 18 | (0:r1=1 /\ 1:r1=1 /\ 2:r1=1 /\ 3:r1=1) 19 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/aclwdrr019.litmus: -------------------------------------------------------------------------------- 1 | PPC aclwdrr019 2 | "Fre SyncsWR Fre SyncdWR Fre Rfe LwSyncdRR" 3 | Cycle=Fre SyncsWR Fre SyncdWR Fre Rfe LwSyncdRR 4 | Relax=ACLwSyncdRR 5 | Safe=Fre SyncsWR SyncdWR 6 | { 7 | 0:r2=y; 8 | 1:r2=y; 1:r4=x; 9 | 2:r2=x; 10 | 3:r2=x; 3:r4=y; 11 | } 12 | P0 | P1 | P2 | P3 ; 13 | li r1,1 | li r1,2 | li r1,1 | lwz r1,0(r2) ; 14 | stw r1,0(r2) | stw r1,0(r2) | stw r1,0(r2) | lwsync ; 15 | sync | sync | | lwz r3,0(r4) ; 16 | lwz r3,0(r2) | lwz r3,0(r4) | | ; 17 | exists 18 | (y=2 /\ 0:r3=1 /\ 1:r3=0 /\ 3:r1=1 /\ 3:r3=0) 19 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/aclwdrr020.litmus: -------------------------------------------------------------------------------- 1 | PPC aclwdrr020 2 | "Fre SyncdWR Fre SyncsWR Fre Rfe LwSyncdRR" 3 | Cycle=Fre SyncdWR Fre SyncsWR Fre Rfe LwSyncdRR 4 | Relax=ACLwSyncdRR 5 | Safe=Fre SyncsWR SyncdWR 6 | { 7 | 0:r2=y; 0:r4=x; 8 | 1:r2=x; 9 | 2:r2=x; 10 | 3:r2=x; 3:r4=y; 11 | } 12 | P0 | P1 | P2 | P3 ; 13 | li r1,1 | li r1,1 | li r1,2 | lwz r1,0(r2) ; 14 | stw r1,0(r2) | stw r1,0(r2) | stw r1,0(r2) | lwsync ; 15 | sync | sync | | lwz r3,0(r4) ; 16 | lwz r3,0(r4) | lwz r3,0(r2) | | ; 17 | exists 18 | (x=2 /\ 0:r3=0 /\ 1:r3=1 /\ 3:r1=2 /\ 3:r3=0) 19 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/safe221.litmus: -------------------------------------------------------------------------------- 1 | PPC safe221 2 | "SyncdWW Rfe DpdW Wsi Rfe SyncdRW Wse" 3 | Cycle=SyncdWW Rfe DpdW Wsi Rfe SyncdRW Wse 4 | Relax= 5 | Safe=Wsi Wse DpdW ACSyncdRW BCSyncdWW 6 | { 7 | 0:r2=x; 0:r5=y; 8 | 1:r2=y; 1:r4=z; 9 | 2:r2=z; 2:r4=x; 10 | } 11 | P0 | P1 | P2 ; 12 | lwz r1,0(r2) | lwz r1,0(r2) | li r1,2 ; 13 | xor r3,r1,r1 | sync | stw r1,0(r2) ; 14 | li r4,1 | li r3,1 | sync ; 15 | stwx r4,r3,r5 | stw r3,0(r4) | li r3,1 ; 16 | li r6,2 | | stw r3,0(r4) ; 17 | stw r6,0(r5) | | ; 18 | exists 19 | (y=2 /\ z=2 /\ 0:r1=1 /\ 1:r1=2) 20 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/safe297.litmus: -------------------------------------------------------------------------------- 1 | PPC safe297 2 | "Rfe SyncdRR Fre SyncsWW Rfe DpdW Wsi" 3 | Cycle=Rfe SyncdRR Fre SyncsWW Rfe DpdW Wsi 4 | Relax= 5 | Safe=Fre Wsi DpdW ACSyncdRR BCSyncsWW 6 | { 7 | 0:r2=y; 0:r4=x; 8 | 1:r2=x; 9 | 2:r2=x; 2:r5=y; 10 | } 11 | P0 | P1 | P2 ; 12 | lwz r1,0(r2) | li r1,1 | lwz r1,0(r2) ; 13 | sync | stw r1,0(r2) | xor r3,r1,r1 ; 14 | lwz r3,0(r4) | sync | li r4,1 ; 15 | | li r3,2 | stwx r4,r3,r5 ; 16 | | stw r3,0(r2) | li r6,2 ; 17 | | | stw r6,0(r5) ; 18 | exists 19 | (x=2 /\ y=2 /\ 0:r1=2 /\ 0:r3=0 /\ 2:r1=2) 20 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/safe301.litmus: -------------------------------------------------------------------------------- 1 | PPC safe301 2 | "Rfe SyncdRR Fre SyncdWW Rfe DpdW Wsi" 3 | Cycle=Rfe SyncdRR Fre SyncdWW Rfe DpdW Wsi 4 | Relax= 5 | Safe=Fre Wsi DpdW ACSyncdRR BCSyncdWW 6 | { 7 | 0:r2=z; 0:r4=x; 8 | 1:r2=x; 1:r4=y; 9 | 2:r2=y; 2:r5=z; 10 | } 11 | P0 | P1 | P2 ; 12 | lwz r1,0(r2) | li r1,1 | lwz r1,0(r2) ; 13 | sync | stw r1,0(r2) | xor r3,r1,r1 ; 14 | lwz r3,0(r4) | sync | li r4,1 ; 15 | | li r3,1 | stwx r4,r3,r5 ; 16 | | stw r3,0(r4) | li r6,2 ; 17 | | | stw r6,0(r5) ; 18 | exists 19 | (z=2 /\ 0:r1=2 /\ 0:r3=0 /\ 2:r1=1) 20 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/safe561.litmus: -------------------------------------------------------------------------------- 1 | PPC safe561 2 | "Rfe SyncdRW Rfe SyncsRW Rfe SyncdRW Rfe SyncsRW" 3 | Cycle=Rfe SyncdRW Rfe SyncsRW Rfe SyncdRW Rfe SyncsRW 4 | Relax= 5 | Safe=ACSyncsRW ACSyncdRW 6 | { 7 | 0:r2=y; 0:r4=x; 8 | 1:r2=x; 9 | 2:r2=x; 2:r4=y; 10 | 3:r2=y; 11 | } 12 | P0 | P1 | P2 | P3 ; 13 | lwz r1,0(r2) | lwz r1,0(r2) | lwz r1,0(r2) | lwz r1,0(r2) ; 14 | sync | sync | sync | sync ; 15 | li r3,1 | li r3,2 | li r3,1 | li r3,2 ; 16 | stw r3,0(r4) | stw r3,0(r2) | stw r3,0(r4) | stw r3,0(r2) ; 17 | exists 18 | (x=2 /\ y=2 /\ 0:r1=2 /\ 1:r1=1 /\ 2:r1=2 /\ 3:r1=1) 19 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/safe563.litmus: -------------------------------------------------------------------------------- 1 | PPC safe563 2 | "Rfe SyncdRW Rfe SyncdRW Rfe SyncdRW Rfe SyncsRW" 3 | Cycle=Rfe SyncdRW Rfe SyncdRW Rfe SyncdRW Rfe SyncsRW 4 | Relax= 5 | Safe=ACSyncsRW ACSyncdRW 6 | { 7 | 0:r2=z; 0:r4=x; 8 | 1:r2=x; 1:r4=y; 9 | 2:r2=y; 2:r4=z; 10 | 3:r2=z; 11 | } 12 | P0 | P1 | P2 | P3 ; 13 | lwz r1,0(r2) | lwz r1,0(r2) | lwz r1,0(r2) | lwz r1,0(r2) ; 14 | sync | sync | sync | sync ; 15 | li r3,1 | li r3,1 | li r3,1 | li r3,2 ; 16 | stw r3,0(r4) | stw r3,0(r4) | stw r3,0(r4) | stw r3,0(r2) ; 17 | exists 18 | (z=2 /\ 0:r1=2 /\ 1:r1=1 /\ 2:r1=1 /\ 3:r1=1) 19 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/lwswr001.litmus: -------------------------------------------------------------------------------- 1 | PPC lwswr001 2 | "DpdR Fre LwSyncsWR DpdR Fre LwSyncsWR Fre LwSyncsWR" 3 | Cycle=DpdR Fre LwSyncsWR DpdR Fre LwSyncsWR Fre LwSyncsWR 4 | Relax=LwSyncsWR 5 | Safe=Fre DpdR 6 | { 7 | 0:r2=x; 0:r6=y; 8 | 1:r2=y; 9 | 2:r2=y; 2:r6=x; 10 | } 11 | P0 | P1 | P2 ; 12 | li r1,1 | li r1,1 | li r1,2 ; 13 | stw r1,0(r2) | stw r1,0(r2) | stw r1,0(r2) ; 14 | lwsync | lwsync | lwsync ; 15 | lwz r3,0(r2) | lwz r3,0(r2) | lwz r3,0(r2) ; 16 | xor r4,r3,r3 | | xor r4,r3,r3 ; 17 | lwzx r5,r4,r6 | | lwzx r5,r4,r6 ; 18 | exists 19 | (y=2 /\ 0:r3=1 /\ 0:r5=0 /\ 1:r3=1 /\ 2:r3=2 /\ 2:r5=0) 20 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/podrwposwr030.litmus: -------------------------------------------------------------------------------- 1 | PPC podrwposwr030 2 | "DpdR Fre SyncdWR Fre SyncdWW Rfe PodRW PosWR" 3 | Cycle=DpdR Fre SyncdWR Fre SyncdWW Rfe PodRW PosWR 4 | Relax=[PodRW,PosWR] 5 | Safe=Fre SyncdWR DpdR BCSyncdWW 6 | { 7 | 0:r2=x; 0:r4=y; 8 | 1:r2=y; 1:r4=z; 9 | 2:r2=z; 2:r4=a; 2:r8=x; 10 | } 11 | P0 | P1 | P2 ; 12 | li r1,1 | li r1,1 | lwz r1,0(r2) ; 13 | stw r1,0(r2) | stw r1,0(r2) | li r3,1 ; 14 | sync | sync | stw r3,0(r4) ; 15 | lwz r3,0(r4) | li r3,1 | lwz r5,0(r4) ; 16 | | stw r3,0(r4) | xor r6,r5,r5 ; 17 | | | lwzx r7,r6,r8 ; 18 | exists 19 | (0:r3=0 /\ 2:r1=1 /\ 2:r7=0) 20 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/safe039.litmus: -------------------------------------------------------------------------------- 1 | PPC safe039 2 | "Rfe SyncdRW Wse SyncdWW Wse SyncdWW Wse" 3 | Cycle=Rfe SyncdRW Wse SyncdWW Wse SyncdWW Wse 4 | Relax= 5 | Safe=Wse SyncdWW ACSyncdRW 6 | { 7 | 0:r2=z; 0:r4=x; 8 | 1:r2=x; 1:r4=y; 9 | 2:r2=y; 2:r4=z; 10 | 3:r2=z; 11 | } 12 | P0 | P1 | P2 | P3 ; 13 | lwz r1,0(r2) | li r1,2 | li r1,2 | li r1,2 ; 14 | sync | stw r1,0(r2) | stw r1,0(r2) | stw r1,0(r2) ; 15 | li r3,1 | sync | sync | ; 16 | stw r3,0(r4) | li r3,1 | li r3,1 | ; 17 | | stw r3,0(r4) | stw r3,0(r4) | ; 18 | exists 19 | (x=2 /\ y=2 /\ z=2 /\ 0:r1=2) 20 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/podrwposwr047.litmus: -------------------------------------------------------------------------------- 1 | PPC podrwposwr047 2 | "DpdR Fre SyncdWW Wse SyncdWW Rfe PodRW PosWR" 3 | Cycle=DpdR Fre SyncdWW Wse SyncdWW Rfe PodRW PosWR 4 | Relax=[PodRW,PosWR] 5 | Safe=Fre Wse SyncdWW DpdR BCSyncdWW 6 | { 7 | 0:r2=x; 0:r4=y; 8 | 1:r2=y; 1:r4=z; 9 | 2:r2=z; 2:r4=a; 2:r8=x; 10 | } 11 | P0 | P1 | P2 ; 12 | li r1,1 | li r1,2 | lwz r1,0(r2) ; 13 | stw r1,0(r2) | stw r1,0(r2) | li r3,1 ; 14 | sync | sync | stw r3,0(r4) ; 15 | li r3,1 | li r3,1 | lwz r5,0(r4) ; 16 | stw r3,0(r4) | stw r3,0(r4) | xor r6,r5,r5 ; 17 | | | lwzx r7,r6,r8 ; 18 | exists 19 | (y=2 /\ 2:r1=1 /\ 2:r7=0) 20 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/podrwposwr059.litmus: -------------------------------------------------------------------------------- 1 | PPC podrwposwr059 2 | "DpdR Fre SyncdWW Rfe SyncdRW Rfe PodRW PosWR" 3 | Cycle=DpdR Fre SyncdWW Rfe SyncdRW Rfe PodRW PosWR 4 | Relax=[PodRW,PosWR] 5 | Safe=Fre DpdR BCSyncdWW BCSyncdRW 6 | { 7 | 0:r2=x; 0:r4=y; 8 | 1:r2=y; 1:r4=z; 9 | 2:r2=z; 2:r4=a; 2:r8=x; 10 | } 11 | P0 | P1 | P2 ; 12 | li r1,1 | lwz r1,0(r2) | lwz r1,0(r2) ; 13 | stw r1,0(r2) | sync | li r3,1 ; 14 | sync | li r3,1 | stw r3,0(r4) ; 15 | li r3,1 | stw r3,0(r4) | lwz r5,0(r4) ; 16 | stw r3,0(r4) | | xor r6,r5,r5 ; 17 | | | lwzx r7,r6,r8 ; 18 | exists 19 | (1:r1=1 /\ 2:r1=1 /\ 2:r7=0) 20 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/safe041.litmus: -------------------------------------------------------------------------------- 1 | PPC safe041 2 | "Rfe SyncdRR Fre SyncdWW Wse SyncdWW Wse" 3 | Cycle=Rfe SyncdRR Fre SyncdWW Wse SyncdWW Wse 4 | Relax= 5 | Safe=Fre Wse SyncdWW ACSyncdRR 6 | { 7 | 0:r2=z; 0:r4=x; 8 | 1:r2=x; 1:r4=y; 9 | 2:r2=y; 2:r4=z; 10 | 3:r2=z; 11 | } 12 | P0 | P1 | P2 | P3 ; 13 | lwz r1,0(r2) | li r1,1 | li r1,2 | li r1,2 ; 14 | sync | stw r1,0(r2) | stw r1,0(r2) | stw r1,0(r2) ; 15 | lwz r3,0(r4) | sync | sync | ; 16 | | li r3,1 | li r3,1 | ; 17 | | stw r3,0(r4) | stw r3,0(r4) | ; 18 | exists 19 | (y=2 /\ z=2 /\ 0:r1=2 /\ 0:r3=0) 20 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/safe062.litmus: -------------------------------------------------------------------------------- 1 | PPC safe062 2 | "Rfe SyncdRW Rfe SyncdRW Wse SyncdWW Wse" 3 | Cycle=Rfe SyncdRW Rfe SyncdRW Wse SyncdWW Wse 4 | Relax= 5 | Safe=Wse SyncdWW ACSyncdRW 6 | { 7 | 0:r2=z; 0:r4=x; 8 | 1:r2=x; 1:r4=y; 9 | 2:r2=y; 2:r4=z; 10 | 3:r2=z; 11 | } 12 | P0 | P1 | P2 | P3 ; 13 | lwz r1,0(r2) | lwz r1,0(r2) | li r1,2 | li r1,2 ; 14 | sync | sync | stw r1,0(r2) | stw r1,0(r2) ; 15 | li r3,1 | li r3,1 | sync | ; 16 | stw r3,0(r4) | stw r3,0(r4) | li r3,1 | ; 17 | | | stw r3,0(r4) | ; 18 | exists 19 | (y=2 /\ z=2 /\ 0:r1=2 /\ 1:r1=1) 20 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/podrwposwr005.litmus: -------------------------------------------------------------------------------- 1 | PPC podrwposwr005 2 | "Fre SyncdWR Fre SyncdWW Rfe DpdR PodRW PosWR" 3 | Cycle=Fre SyncdWR Fre SyncdWW Rfe DpdR PodRW PosWR 4 | Relax=[PodRW,PosWR] 5 | Safe=Fre SyncdWR DpdR BCSyncdWW 6 | { 7 | 0:r2=a; 0:r4=x; 8 | 1:r2=x; 1:r4=y; 9 | 2:r2=y; 2:r5=z; 2:r7=a; 10 | } 11 | P0 | P1 | P2 ; 12 | li r1,2 | li r1,1 | lwz r1,0(r2) ; 13 | stw r1,0(r2) | stw r1,0(r2) | xor r3,r1,r1 ; 14 | sync | sync | lwzx r4,r3,r5 ; 15 | lwz r3,0(r4) | li r3,1 | li r6,1 ; 16 | | stw r3,0(r4) | stw r6,0(r7) ; 17 | | | lwz r8,0(r7) ; 18 | exists 19 | (a=2 /\ 0:r3=0 /\ 2:r1=1 /\ 2:r8=1) 20 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/podrwposwr011.litmus: -------------------------------------------------------------------------------- 1 | PPC podrwposwr011 2 | "Fre SyncdWW Wse SyncdWW Rfe DpdR PodRW PosWR" 3 | Cycle=Fre SyncdWW Wse SyncdWW Rfe DpdR PodRW PosWR 4 | Relax=[PodRW,PosWR] 5 | Safe=Fre Wse SyncdWW DpdR BCSyncdWW 6 | { 7 | 0:r2=a; 0:r4=x; 8 | 1:r2=x; 1:r4=y; 9 | 2:r2=y; 2:r5=z; 2:r7=a; 10 | } 11 | P0 | P1 | P2 ; 12 | li r1,2 | li r1,2 | lwz r1,0(r2) ; 13 | stw r1,0(r2) | stw r1,0(r2) | xor r3,r1,r1 ; 14 | sync | sync | lwzx r4,r3,r5 ; 15 | li r3,1 | li r3,1 | li r6,1 ; 16 | stw r3,0(r4) | stw r3,0(r4) | stw r6,0(r7) ; 17 | | | lwz r8,0(r7) ; 18 | exists 19 | (a=2 /\ x=2 /\ 2:r1=1 /\ 2:r8=1) 20 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/podrwposwr015.litmus: -------------------------------------------------------------------------------- 1 | PPC podrwposwr015 2 | "Fre SyncdWW Rfe SyncdRW Rfe DpdR PodRW PosWR" 3 | Cycle=Fre SyncdWW Rfe SyncdRW Rfe DpdR PodRW PosWR 4 | Relax=[PodRW,PosWR] 5 | Safe=Fre DpdR BCSyncdWW BCSyncdRW 6 | { 7 | 0:r2=a; 0:r4=x; 8 | 1:r2=x; 1:r4=y; 9 | 2:r2=y; 2:r5=z; 2:r7=a; 10 | } 11 | P0 | P1 | P2 ; 12 | li r1,2 | lwz r1,0(r2) | lwz r1,0(r2) ; 13 | stw r1,0(r2) | sync | xor r3,r1,r1 ; 14 | sync | li r3,1 | lwzx r4,r3,r5 ; 15 | li r3,1 | stw r3,0(r4) | li r6,1 ; 16 | stw r3,0(r4) | | stw r6,0(r7) ; 17 | | | lwz r8,0(r7) ; 18 | exists 19 | (a=2 /\ 1:r1=1 /\ 2:r1=1 /\ 2:r8=1) 20 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/safe017.litmus: -------------------------------------------------------------------------------- 1 | PPC safe017 2 | "Rfe SyncdRW Wse SyncdWW Rfe DpdW Wse" 3 | Cycle=Rfe SyncdRW Wse SyncdWW Rfe DpdW Wse 4 | Relax= 5 | Safe=Wse DpdW ACSyncdRW BCSyncdWW 6 | { 7 | 0:r2=z; 0:r4=x; 8 | 1:r2=x; 1:r4=y; 9 | 2:r2=y; 2:r5=z; 10 | 3:r2=z; 11 | } 12 | P0 | P1 | P2 | P3 ; 13 | lwz r1,0(r2) | li r1,2 | lwz r1,0(r2) | li r1,2 ; 14 | sync | stw r1,0(r2) | xor r3,r1,r1 | stw r1,0(r2) ; 15 | li r3,1 | sync | li r4,1 | ; 16 | stw r3,0(r4) | li r3,1 | stwx r4,r3,r5 | ; 17 | | stw r3,0(r4) | | ; 18 | exists 19 | (x=2 /\ z=2 /\ 0:r1=2 /\ 2:r1=1) 20 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/safe137.litmus: -------------------------------------------------------------------------------- 1 | PPC safe137 2 | "Rfe SyncdRW Wse LwSyncdWW Wse LwSyncdWW Wse" 3 | Cycle=Rfe SyncdRW Wse LwSyncdWW Wse LwSyncdWW Wse 4 | Relax= 5 | Safe=Wse LwSyncdWW ACSyncdRW 6 | { 7 | 0:r2=z; 0:r4=x; 8 | 1:r2=x; 1:r4=y; 9 | 2:r2=y; 2:r4=z; 10 | 3:r2=z; 11 | } 12 | P0 | P1 | P2 | P3 ; 13 | lwz r1,0(r2) | li r1,2 | li r1,2 | li r1,2 ; 14 | sync | stw r1,0(r2) | stw r1,0(r2) | stw r1,0(r2) ; 15 | li r3,1 | lwsync | lwsync | ; 16 | stw r3,0(r4) | li r3,1 | li r3,1 | ; 17 | | stw r3,0(r4) | stw r3,0(r4) | ; 18 | exists 19 | (x=2 /\ y=2 /\ z=2 /\ 0:r1=2) 20 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/safe151.litmus: -------------------------------------------------------------------------------- 1 | PPC safe151 2 | "Rfe SyncdRW Rfe SyncdRW Wse LwSyncdWW Wse" 3 | Cycle=Rfe SyncdRW Rfe SyncdRW Wse LwSyncdWW Wse 4 | Relax= 5 | Safe=Wse LwSyncdWW ACSyncdRW 6 | { 7 | 0:r2=z; 0:r4=x; 8 | 1:r2=x; 1:r4=y; 9 | 2:r2=y; 2:r4=z; 10 | 3:r2=z; 11 | } 12 | P0 | P1 | P2 | P3 ; 13 | lwz r1,0(r2) | lwz r1,0(r2) | li r1,2 | li r1,2 ; 14 | sync | sync | stw r1,0(r2) | stw r1,0(r2) ; 15 | li r3,1 | li r3,1 | lwsync | ; 16 | stw r3,0(r4) | stw r3,0(r4) | li r3,1 | ; 17 | | | stw r3,0(r4) | ; 18 | exists 19 | (y=2 /\ z=2 /\ 0:r1=2 /\ 1:r1=1) 20 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/safe219.litmus: -------------------------------------------------------------------------------- 1 | PPC safe219 2 | "LwSyncdWW Rfe SyncdRW Wse Rfe SyncdRW Wse" 3 | Cycle=LwSyncdWW Rfe SyncdRW Wse Rfe SyncdRW Wse 4 | Relax= 5 | Safe=Wse LwSyncdWW ACSyncdRW 6 | { 7 | 0:r2=x; 0:r4=y; 8 | 1:r2=y; 9 | 2:r2=y; 2:r4=z; 10 | 3:r2=z; 3:r4=x; 11 | } 12 | P0 | P1 | P2 | P3 ; 13 | lwz r1,0(r2) | li r1,2 | lwz r1,0(r2) | li r1,2 ; 14 | sync | stw r1,0(r2) | sync | stw r1,0(r2) ; 15 | li r3,1 | | li r3,1 | lwsync ; 16 | stw r3,0(r4) | | stw r3,0(r4) | li r3,1 ; 17 | | | | stw r3,0(r4) ; 18 | exists 19 | (y=2 /\ z=2 /\ 0:r1=1 /\ 2:r1=2) 20 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/safe004.litmus: -------------------------------------------------------------------------------- 1 | PPC safe004 2 | "Rfe SyncdRR Fre SyncsWW Rfe DpdW Wse" 3 | Cycle=Rfe SyncdRR Fre SyncsWW Rfe DpdW Wse 4 | Relax= 5 | Safe=Fre Wse DpdW ACSyncdRR BCSyncsWW 6 | { 7 | 0:r2=y; 0:r4=x; 8 | 1:r2=x; 9 | 2:r2=x; 2:r5=y; 10 | 3:r2=y; 11 | } 12 | P0 | P1 | P2 | P3 ; 13 | lwz r1,0(r2) | li r1,1 | lwz r1,0(r2) | li r1,2 ; 14 | sync | stw r1,0(r2) | xor r3,r1,r1 | stw r1,0(r2) ; 15 | lwz r3,0(r4) | sync | li r4,1 | ; 16 | | li r3,2 | stwx r4,r3,r5 | ; 17 | | stw r3,0(r2) | | ; 18 | exists 19 | (x=2 /\ y=2 /\ 0:r1=2 /\ 0:r3=0 /\ 2:r1=2) 20 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/safe027.litmus: -------------------------------------------------------------------------------- 1 | PPC safe027 2 | "Rfe SyncdRR Fre SyncdWW Rfe DpdW Wse" 3 | Cycle=Rfe SyncdRR Fre SyncdWW Rfe DpdW Wse 4 | Relax= 5 | Safe=Fre Wse DpdW ACSyncdRR BCSyncdWW 6 | { 7 | 0:r2=z; 0:r4=x; 8 | 1:r2=x; 1:r4=y; 9 | 2:r2=y; 2:r5=z; 10 | 3:r2=z; 11 | } 12 | P0 | P1 | P2 | P3 ; 13 | lwz r1,0(r2) | li r1,1 | lwz r1,0(r2) | li r1,2 ; 14 | sync | stw r1,0(r2) | xor r3,r1,r1 | stw r1,0(r2) ; 15 | lwz r3,0(r4) | sync | li r4,1 | ; 16 | | li r3,1 | stwx r4,r3,r5 | ; 17 | | stw r3,0(r4) | | ; 18 | exists 19 | (z=2 /\ 0:r1=2 /\ 0:r3=0 /\ 2:r1=1) 20 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/safe047.litmus: -------------------------------------------------------------------------------- 1 | PPC safe047 2 | "Rfe SyncdRW Wse LwSyncdWW Wse SyncdWW Wse" 3 | Cycle=Rfe SyncdRW Wse LwSyncdWW Wse SyncdWW Wse 4 | Relax= 5 | Safe=Wse SyncdWW LwSyncdWW ACSyncdRW 6 | { 7 | 0:r2=z; 0:r4=x; 8 | 1:r2=x; 1:r4=y; 9 | 2:r2=y; 2:r4=z; 10 | 3:r2=z; 11 | } 12 | P0 | P1 | P2 | P3 ; 13 | lwz r1,0(r2) | li r1,2 | li r1,2 | li r1,2 ; 14 | sync | stw r1,0(r2) | stw r1,0(r2) | stw r1,0(r2) ; 15 | li r3,1 | lwsync | sync | ; 16 | stw r3,0(r4) | li r3,1 | li r3,1 | ; 17 | | stw r3,0(r4) | stw r3,0(r4) | ; 18 | exists 19 | (x=2 /\ y=2 /\ z=2 /\ 0:r1=2) 20 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/safe054.litmus: -------------------------------------------------------------------------------- 1 | PPC safe054 2 | "LwSyncdWW Wse Rfe SyncdRW Wse SyncdWW Wse" 3 | Cycle=LwSyncdWW Wse Rfe SyncdRW Wse SyncdWW Wse 4 | Relax= 5 | Safe=Wse SyncdWW LwSyncdWW ACSyncdRW 6 | { 7 | 0:r2=x; 0:r4=y; 8 | 1:r2=y; 1:r4=z; 9 | 2:r2=z; 2:r4=x; 10 | 3:r2=x; 11 | } 12 | P0 | P1 | P2 | P3 ; 13 | lwz r1,0(r2) | li r1,2 | li r1,2 | li r1,2 ; 14 | sync | stw r1,0(r2) | stw r1,0(r2) | stw r1,0(r2) ; 15 | li r3,1 | sync | lwsync | ; 16 | stw r3,0(r4) | li r3,1 | li r3,1 | ; 17 | | stw r3,0(r4) | stw r3,0(r4) | ; 18 | exists 19 | (x=2 /\ y=2 /\ z=2 /\ 0:r1=2) 20 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/safe055.litmus: -------------------------------------------------------------------------------- 1 | PPC safe055 2 | "SyncdWR Fre Rfe SyncdRW Wse SyncdWW Wse" 3 | Cycle=SyncdWR Fre Rfe SyncdRW Wse SyncdWW Wse 4 | Relax= 5 | Safe=Fre Wse SyncdWW SyncdWR ACSyncdRW 6 | { 7 | 0:r2=x; 0:r4=y; 8 | 1:r2=y; 1:r4=z; 9 | 2:r2=z; 2:r4=x; 10 | 3:r2=x; 11 | } 12 | P0 | P1 | P2 | P3 ; 13 | lwz r1,0(r2) | li r1,2 | li r1,2 | li r1,1 ; 14 | sync | stw r1,0(r2) | stw r1,0(r2) | stw r1,0(r2) ; 15 | li r3,1 | sync | sync | ; 16 | stw r3,0(r4) | li r3,1 | lwz r3,0(r4) | ; 17 | | stw r3,0(r4) | | ; 18 | exists 19 | (y=2 /\ z=2 /\ 0:r1=1 /\ 2:r3=0) 20 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/safe071.litmus: -------------------------------------------------------------------------------- 1 | PPC safe071 2 | "Rfe SyncdRW Wse SyncdWR Fre SyncdWW Wse" 3 | Cycle=Rfe SyncdRW Wse SyncdWR Fre SyncdWW Wse 4 | Relax= 5 | Safe=Fre Wse SyncdWW SyncdWR ACSyncdRW 6 | { 7 | 0:r2=z; 0:r4=x; 8 | 1:r2=x; 1:r4=y; 9 | 2:r2=y; 2:r4=z; 10 | 3:r2=z; 11 | } 12 | P0 | P1 | P2 | P3 ; 13 | lwz r1,0(r2) | li r1,2 | li r1,1 | li r1,2 ; 14 | sync | stw r1,0(r2) | stw r1,0(r2) | stw r1,0(r2) ; 15 | li r3,1 | sync | sync | ; 16 | stw r3,0(r4) | lwz r3,0(r4) | li r3,1 | ; 17 | | | stw r3,0(r4) | ; 18 | exists 19 | (x=2 /\ z=2 /\ 0:r1=2 /\ 1:r3=0) 20 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/safe078.litmus: -------------------------------------------------------------------------------- 1 | PPC safe078 2 | "Rfe SyncdRR Fre SyncsWR Fre SyncdWW Wse" 3 | Cycle=Rfe SyncdRR Fre SyncsWR Fre SyncdWW Wse 4 | Relax= 5 | Safe=Fre Wse SyncsWR SyncdWW ACSyncdRR 6 | { 7 | 0:r2=y; 0:r4=x; 8 | 1:r2=x; 9 | 2:r2=x; 2:r4=y; 10 | 3:r2=y; 11 | } 12 | P0 | P1 | P2 | P3 ; 13 | lwz r1,0(r2) | li r1,1 | li r1,2 | li r1,2 ; 14 | sync | stw r1,0(r2) | stw r1,0(r2) | stw r1,0(r2) ; 15 | lwz r3,0(r4) | sync | sync | ; 16 | | lwz r3,0(r2) | li r3,1 | ; 17 | | | stw r3,0(r4) | ; 18 | exists 19 | (x=2 /\ y=2 /\ 0:r1=2 /\ 0:r3=0 /\ 1:r3=1) 20 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/safe086.litmus: -------------------------------------------------------------------------------- 1 | PPC safe086 2 | "SyncdWR Fre Rfe SyncsRR Fre SyncdWW Wse" 3 | Cycle=SyncdWR Fre Rfe SyncsRR Fre SyncdWW Wse 4 | Relax= 5 | Safe=Fre Wse SyncdWW SyncdWR ACSyncsRR 6 | { 7 | 0:r2=x; 8 | 1:r2=x; 1:r4=y; 9 | 2:r2=y; 2:r4=x; 10 | 3:r2=x; 11 | } 12 | P0 | P1 | P2 | P3 ; 13 | lwz r1,0(r2) | li r1,2 | li r1,2 | li r1,1 ; 14 | sync | stw r1,0(r2) | stw r1,0(r2) | stw r1,0(r2) ; 15 | lwz r3,0(r2) | sync | sync | ; 16 | | li r3,1 | lwz r3,0(r4) | ; 17 | | stw r3,0(r4) | | ; 18 | exists 19 | (x=2 /\ y=2 /\ 0:r1=1 /\ 0:r3=1 /\ 2:r3=0) 20 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/safe117.litmus: -------------------------------------------------------------------------------- 1 | PPC safe117 2 | "Rfe SyncdRW Wse SyncdWW Rfe SyncdRW Wse" 3 | Cycle=Rfe SyncdRW Wse SyncdWW Rfe SyncdRW Wse 4 | Relax= 5 | Safe=Wse SyncdRW ACSyncdRW BCSyncdWW 6 | { 7 | 0:r2=z; 0:r4=x; 8 | 1:r2=x; 1:r4=y; 9 | 2:r2=y; 2:r4=z; 10 | 3:r2=z; 11 | } 12 | P0 | P1 | P2 | P3 ; 13 | lwz r1,0(r2) | li r1,2 | lwz r1,0(r2) | li r1,2 ; 14 | sync | stw r1,0(r2) | sync | stw r1,0(r2) ; 15 | li r3,1 | sync | li r3,1 | ; 16 | stw r3,0(r4) | li r3,1 | stw r3,0(r4) | ; 17 | | stw r3,0(r4) | | ; 18 | exists 19 | (x=2 /\ z=2 /\ 0:r1=2 /\ 2:r1=1) 20 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/safe139.litmus: -------------------------------------------------------------------------------- 1 | PPC safe139 2 | "Rfe SyncdRR Fre LwSyncdWW Wse LwSyncdWW Wse" 3 | Cycle=Rfe SyncdRR Fre LwSyncdWW Wse LwSyncdWW Wse 4 | Relax= 5 | Safe=Fre Wse LwSyncdWW ACSyncdRR 6 | { 7 | 0:r2=z; 0:r4=x; 8 | 1:r2=x; 1:r4=y; 9 | 2:r2=y; 2:r4=z; 10 | 3:r2=z; 11 | } 12 | P0 | P1 | P2 | P3 ; 13 | lwz r1,0(r2) | li r1,1 | li r1,2 | li r1,2 ; 14 | sync | stw r1,0(r2) | stw r1,0(r2) | stw r1,0(r2) ; 15 | lwz r3,0(r4) | lwsync | lwsync | ; 16 | | li r3,1 | li r3,1 | ; 17 | | stw r3,0(r4) | stw r3,0(r4) | ; 18 | exists 19 | (y=2 /\ z=2 /\ 0:r1=2 /\ 0:r3=0) 20 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/safe223.litmus: -------------------------------------------------------------------------------- 1 | PPC safe223 2 | "SyncdWW Rfe DpdR Fre Rfe SyncdRW Wse" 3 | Cycle=SyncdWW Rfe DpdR Fre Rfe SyncdRW Wse 4 | Relax= 5 | Safe=Fre Wse DpdR ACSyncdRW BCSyncdWW 6 | { 7 | 0:r2=x; 0:r5=y; 8 | 1:r2=y; 9 | 2:r2=y; 2:r4=z; 10 | 3:r2=z; 3:r4=x; 11 | } 12 | P0 | P1 | P2 | P3 ; 13 | lwz r1,0(r2) | li r1,1 | lwz r1,0(r2) | li r1,2 ; 14 | xor r3,r1,r1 | stw r1,0(r2) | sync | stw r1,0(r2) ; 15 | lwzx r4,r3,r5 | | li r3,1 | sync ; 16 | | | stw r3,0(r4) | li r3,1 ; 17 | | | | stw r3,0(r4) ; 18 | exists 19 | (z=2 /\ 0:r1=1 /\ 0:r4=0 /\ 2:r1=1) 20 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/safe224.litmus: -------------------------------------------------------------------------------- 1 | PPC safe224 2 | "SyncdWW Rfe DpsR Fre Rfe SyncdRW Wse" 3 | Cycle=SyncdWW Rfe DpsR Fre Rfe SyncdRW Wse 4 | Relax= 5 | Safe=Fre Wse DpsR ACSyncdRW BCSyncdWW 6 | { 7 | 0:r2=x; 8 | 1:r2=x; 9 | 2:r2=x; 2:r4=y; 10 | 3:r2=y; 3:r4=x; 11 | } 12 | P0 | P1 | P2 | P3 ; 13 | lwz r1,0(r2) | li r1,2 | lwz r1,0(r2) | li r1,2 ; 14 | xor r3,r1,r1 | stw r1,0(r2) | sync | stw r1,0(r2) ; 15 | lwzx r4,r3,r2 | | li r3,1 | sync ; 16 | | | stw r3,0(r4) | li r3,1 ; 17 | | | | stw r3,0(r4) ; 18 | exists 19 | (x=2 /\ y=2 /\ 0:r1=1 /\ 0:r4=1 /\ 2:r1=2) 20 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/safe312.litmus: -------------------------------------------------------------------------------- 1 | PPC safe312 2 | "Rfe SyncdRR Fre SyncsWW Rfe DpdR Fre" 3 | Cycle=Rfe SyncdRR Fre SyncsWW Rfe DpdR Fre 4 | Relax= 5 | Safe=Fre DpdR ACSyncdRR BCSyncsWW 6 | { 7 | 0:r2=y; 0:r4=x; 8 | 1:r2=x; 9 | 2:r2=x; 2:r5=y; 10 | 3:r2=y; 11 | } 12 | P0 | P1 | P2 | P3 ; 13 | lwz r1,0(r2) | li r1,1 | lwz r1,0(r2) | li r1,1 ; 14 | sync | stw r1,0(r2) | xor r3,r1,r1 | stw r1,0(r2) ; 15 | lwz r3,0(r4) | sync | lwzx r4,r3,r5 | ; 16 | | li r3,2 | | ; 17 | | stw r3,0(r2) | | ; 18 | exists 19 | (x=2 /\ 0:r1=1 /\ 0:r3=0 /\ 2:r1=2 /\ 2:r4=0) 20 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/safe331.litmus: -------------------------------------------------------------------------------- 1 | PPC safe331 2 | "Rfe SyncsRR Fre SyncdWW Rfe DpdR Fre" 3 | Cycle=Rfe SyncsRR Fre SyncdWW Rfe DpdR Fre 4 | Relax= 5 | Safe=Fre DpdR ACSyncsRR BCSyncdWW 6 | { 7 | 0:r2=y; 8 | 1:r2=y; 1:r4=x; 9 | 2:r2=x; 2:r5=y; 10 | 3:r2=y; 11 | } 12 | P0 | P1 | P2 | P3 ; 13 | lwz r1,0(r2) | li r1,2 | lwz r1,0(r2) | li r1,1 ; 14 | sync | stw r1,0(r2) | xor r3,r1,r1 | stw r1,0(r2) ; 15 | lwz r3,0(r2) | sync | lwzx r4,r3,r5 | ; 16 | | li r3,1 | | ; 17 | | stw r3,0(r4) | | ; 18 | exists 19 | (y=2 /\ 0:r1=1 /\ 0:r3=1 /\ 2:r1=1 /\ 2:r4=0) 20 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/safe333.litmus: -------------------------------------------------------------------------------- 1 | PPC safe333 2 | "Rfe SyncdRR Fre SyncdWW Rfe DpdR Fre" 3 | Cycle=Rfe SyncdRR Fre SyncdWW Rfe DpdR Fre 4 | Relax= 5 | Safe=Fre DpdR ACSyncdRR BCSyncdWW 6 | { 7 | 0:r2=z; 0:r4=x; 8 | 1:r2=x; 1:r4=y; 9 | 2:r2=y; 2:r5=z; 10 | 3:r2=z; 11 | } 12 | P0 | P1 | P2 | P3 ; 13 | lwz r1,0(r2) | li r1,1 | lwz r1,0(r2) | li r1,1 ; 14 | sync | stw r1,0(r2) | xor r3,r1,r1 | stw r1,0(r2) ; 15 | lwz r3,0(r4) | sync | lwzx r4,r3,r5 | ; 16 | | li r3,1 | | ; 17 | | stw r3,0(r4) | | ; 18 | exists 19 | (0:r1=1 /\ 0:r3=0 /\ 2:r1=1 /\ 2:r4=0) 20 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/safe351.litmus: -------------------------------------------------------------------------------- 1 | PPC safe351 2 | "Rfe SyncdRR Fre SyncdWW Rfe DpsR Fre" 3 | Cycle=Rfe SyncdRR Fre SyncdWW Rfe DpsR Fre 4 | Relax= 5 | Safe=Fre DpsR ACSyncdRR BCSyncdWW 6 | { 7 | 0:r2=y; 0:r4=x; 8 | 1:r2=x; 1:r4=y; 9 | 2:r2=y; 10 | 3:r2=y; 11 | } 12 | P0 | P1 | P2 | P3 ; 13 | lwz r1,0(r2) | li r1,1 | lwz r1,0(r2) | li r1,2 ; 14 | sync | stw r1,0(r2) | xor r3,r1,r1 | stw r1,0(r2) ; 15 | lwz r3,0(r4) | sync | lwzx r4,r3,r2 | ; 16 | | li r3,1 | | ; 17 | | stw r3,0(r4) | | ; 18 | exists 19 | (y=2 /\ 0:r1=2 /\ 0:r3=0 /\ 2:r1=1 /\ 2:r4=1) 20 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/safe504.litmus: -------------------------------------------------------------------------------- 1 | PPC safe504 2 | "LwSyncdWW Rfe SyncdRR Fre Rfe SyncdRR Fre" 3 | Cycle=LwSyncdWW Rfe SyncdRR Fre Rfe SyncdRR Fre 4 | Relax= 5 | Safe=Fre LwSyncdWW ACSyncdRR 6 | { 7 | 0:r2=x; 0:r4=y; 8 | 1:r2=y; 9 | 2:r2=y; 2:r4=z; 10 | 3:r2=z; 3:r4=x; 11 | } 12 | P0 | P1 | P2 | P3 ; 13 | lwz r1,0(r2) | li r1,1 | lwz r1,0(r2) | li r1,1 ; 14 | sync | stw r1,0(r2) | sync | stw r1,0(r2) ; 15 | lwz r3,0(r4) | | lwz r3,0(r4) | lwsync ; 16 | | | | li r3,1 ; 17 | | | | stw r3,0(r4) ; 18 | exists 19 | (0:r1=1 /\ 0:r3=0 /\ 2:r1=1 /\ 2:r3=0) 20 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/safe505.litmus: -------------------------------------------------------------------------------- 1 | PPC safe505 2 | "LwSyncsWW Rfe SyncdRR Fre Rfe SyncdRR Fre" 3 | Cycle=LwSyncsWW Rfe SyncdRR Fre Rfe SyncdRR Fre 4 | Relax= 5 | Safe=Fre LwSyncsWW ACSyncdRR 6 | { 7 | 0:r2=y; 0:r4=x; 8 | 1:r2=x; 9 | 2:r2=x; 2:r4=y; 10 | 3:r2=y; 11 | } 12 | P0 | P1 | P2 | P3 ; 13 | lwz r1,0(r2) | li r1,1 | lwz r1,0(r2) | li r1,1 ; 14 | sync | stw r1,0(r2) | sync | stw r1,0(r2) ; 15 | lwz r3,0(r4) | | lwz r3,0(r4) | lwsync ; 16 | | | | li r3,2 ; 17 | | | | stw r3,0(r2) ; 18 | exists 19 | (y=2 /\ 0:r1=2 /\ 0:r3=0 /\ 2:r1=1 /\ 2:r3=0) 20 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/aclwdrr000.litmus: -------------------------------------------------------------------------------- 1 | PPC aclwdrr000 2 | "Fre SyncdWW Wse SyncdWW Wse Rfe LwSyncdRR" 3 | Cycle=Fre SyncdWW Wse SyncdWW Wse Rfe LwSyncdRR 4 | Relax=ACLwSyncdRR 5 | Safe=Fre Wse SyncdWW 6 | { 7 | 0:r2=z; 0:r4=x; 8 | 1:r2=x; 1:r4=y; 9 | 2:r2=y; 10 | 3:r2=y; 3:r4=z; 11 | } 12 | P0 | P1 | P2 | P3 ; 13 | li r1,1 | li r1,2 | li r1,2 | lwz r1,0(r2) ; 14 | stw r1,0(r2) | stw r1,0(r2) | stw r1,0(r2) | lwsync ; 15 | sync | sync | | lwz r3,0(r4) ; 16 | li r3,1 | li r3,1 | | ; 17 | stw r3,0(r4) | stw r3,0(r4) | | ; 18 | exists 19 | (x=2 /\ y=2 /\ 3:r1=2 /\ 3:r3=0) 20 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/podrr008.litmus: -------------------------------------------------------------------------------- 1 | PPC podrr008 2 | "Fre SyncsWW Rfe PodRR Fre SyncsWW Rfe PodRR" 3 | Cycle=Fre SyncsWW Rfe PodRR Fre SyncsWW Rfe PodRR 4 | Relax=PodRR 5 | Safe=Fre BCSyncsWW 6 | { 7 | 0:r2=y; 8 | 1:r2=y; 1:r4=x; 9 | 2:r2=x; 10 | 3:r2=x; 3:r4=y; 11 | } 12 | P0 | P1 | P2 | P3 ; 13 | li r1,1 | lwz r1,0(r2) | li r1,1 | lwz r1,0(r2) ; 14 | stw r1,0(r2) | lwz r3,0(r4) | stw r1,0(r2) | lwz r3,0(r4) ; 15 | sync | | sync | ; 16 | li r3,2 | | li r3,2 | ; 17 | stw r3,0(r2) | | stw r3,0(r2) | ; 18 | exists 19 | (x=2 /\ y=2 /\ 1:r1=2 /\ 1:r3=0 /\ 3:r1=2 /\ 3:r3=0) 20 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/podrw001.litmus: -------------------------------------------------------------------------------- 1 | PPC podrw001 2 | "Wse SyncdWW Rfe PodRW Wse SyncdWW Rfe PodRW" 3 | Cycle=Wse SyncdWW Rfe PodRW Wse SyncdWW Rfe PodRW 4 | Relax=PodRW 5 | Safe=Wse BCSyncdWW 6 | { 7 | 0:r2=a; 0:r4=x; 8 | 1:r2=x; 1:r4=y; 9 | 2:r2=y; 2:r4=z; 10 | 3:r2=z; 3:r4=a; 11 | } 12 | P0 | P1 | P2 | P3 ; 13 | li r1,2 | lwz r1,0(r2) | li r1,2 | lwz r1,0(r2) ; 14 | stw r1,0(r2) | li r3,1 | stw r1,0(r2) | li r3,1 ; 15 | sync | stw r3,0(r4) | sync | stw r3,0(r4) ; 16 | li r3,1 | | li r3,1 | ; 17 | stw r3,0(r4) | | stw r3,0(r4) | ; 18 | exists 19 | (a=2 /\ y=2 /\ 1:r1=1 /\ 3:r1=1) 20 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/posrr007.litmus: -------------------------------------------------------------------------------- 1 | PPC posrr007 2 | "Fre SyncdWW Rfe PosRR Fre SyncdWW Rfe PosRR" 3 | Cycle=Fre SyncdWW Rfe PosRR Fre SyncdWW Rfe PosRR 4 | Relax=PosRR 5 | Safe=Fre BCSyncdWW 6 | { 7 | 0:r2=y; 0:r4=x; 8 | 1:r2=x; 9 | 2:r2=x; 2:r4=y; 10 | 3:r2=y; 11 | } 12 | P0 | P1 | P2 | P3 ; 13 | li r1,2 | lwz r1,0(r2) | li r1,2 | lwz r1,0(r2) ; 14 | stw r1,0(r2) | lwz r3,0(r2) | stw r1,0(r2) | lwz r3,0(r2) ; 15 | sync | | sync | ; 16 | li r3,1 | | li r3,1 | ; 17 | stw r3,0(r4) | | stw r3,0(r4) | ; 18 | exists 19 | (x=2 /\ y=2 /\ 1:r1=1 /\ 1:r3=1 /\ 3:r1=1 /\ 3:r3=1) 20 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/safe049.litmus: -------------------------------------------------------------------------------- 1 | PPC safe049 2 | "Rfe SyncdRR Fre LwSyncdWW Wse SyncdWW Wse" 3 | Cycle=Rfe SyncdRR Fre LwSyncdWW Wse SyncdWW Wse 4 | Relax= 5 | Safe=Fre Wse SyncdWW LwSyncdWW ACSyncdRR 6 | { 7 | 0:r2=z; 0:r4=x; 8 | 1:r2=x; 1:r4=y; 9 | 2:r2=y; 2:r4=z; 10 | 3:r2=z; 11 | } 12 | P0 | P1 | P2 | P3 ; 13 | lwz r1,0(r2) | li r1,1 | li r1,2 | li r1,2 ; 14 | sync | stw r1,0(r2) | stw r1,0(r2) | stw r1,0(r2) ; 15 | lwz r3,0(r4) | lwsync | sync | ; 16 | | li r3,1 | li r3,1 | ; 17 | | stw r3,0(r4) | stw r3,0(r4) | ; 18 | exists 19 | (y=2 /\ z=2 /\ 0:r1=2 /\ 0:r3=0) 20 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/safe073.litmus: -------------------------------------------------------------------------------- 1 | PPC safe073 2 | "Rfe SyncdRR Fre SyncdWR Fre SyncdWW Wse" 3 | Cycle=Rfe SyncdRR Fre SyncdWR Fre SyncdWW Wse 4 | Relax= 5 | Safe=Fre Wse SyncdWW SyncdWR ACSyncdRR 6 | { 7 | 0:r2=z; 0:r4=x; 8 | 1:r2=x; 1:r4=y; 9 | 2:r2=y; 2:r4=z; 10 | 3:r2=z; 11 | } 12 | P0 | P1 | P2 | P3 ; 13 | lwz r1,0(r2) | li r1,1 | li r1,1 | li r1,2 ; 14 | sync | stw r1,0(r2) | stw r1,0(r2) | stw r1,0(r2) ; 15 | lwz r3,0(r4) | sync | sync | ; 16 | | lwz r3,0(r4) | li r3,1 | ; 17 | | | stw r3,0(r4) | ; 18 | exists 19 | (z=2 /\ 0:r1=2 /\ 0:r3=0 /\ 1:r3=0) 20 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/safe090.litmus: -------------------------------------------------------------------------------- 1 | PPC safe090 2 | "Rfe SyncdRW Rfe SyncsRR Fre SyncdWW Wse" 3 | Cycle=Rfe SyncdRW Rfe SyncsRR Fre SyncdWW Wse 4 | Relax= 5 | Safe=Fre Wse SyncdWW ACSyncsRR ACSyncdRW 6 | { 7 | 0:r2=y; 0:r4=x; 8 | 1:r2=x; 9 | 2:r2=x; 2:r4=y; 10 | 3:r2=y; 11 | } 12 | P0 | P1 | P2 | P3 ; 13 | lwz r1,0(r2) | lwz r1,0(r2) | li r1,2 | li r1,2 ; 14 | sync | sync | stw r1,0(r2) | stw r1,0(r2) ; 15 | li r3,1 | lwz r3,0(r2) | sync | ; 16 | stw r3,0(r4) | | li r3,1 | ; 17 | | | stw r3,0(r4) | ; 18 | exists 19 | (x=2 /\ y=2 /\ 0:r1=2 /\ 1:r1=1 /\ 1:r3=1) 20 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/safe093.litmus: -------------------------------------------------------------------------------- 1 | PPC safe093 2 | "LwSyncdWW Wse Rfe SyncdRR Fre SyncdWW Wse" 3 | Cycle=LwSyncdWW Wse Rfe SyncdRR Fre SyncdWW Wse 4 | Relax= 5 | Safe=Fre Wse SyncdWW LwSyncdWW ACSyncdRR 6 | { 7 | 0:r2=x; 0:r4=y; 8 | 1:r2=y; 1:r4=z; 9 | 2:r2=z; 2:r4=x; 10 | 3:r2=x; 11 | } 12 | P0 | P1 | P2 | P3 ; 13 | lwz r1,0(r2) | li r1,1 | li r1,2 | li r1,2 ; 14 | sync | stw r1,0(r2) | stw r1,0(r2) | stw r1,0(r2) ; 15 | lwz r3,0(r4) | sync | lwsync | ; 16 | | li r3,1 | li r3,1 | ; 17 | | stw r3,0(r4) | stw r3,0(r4) | ; 18 | exists 19 | (x=2 /\ z=2 /\ 0:r1=2 /\ 0:r3=0) 20 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/safe094.litmus: -------------------------------------------------------------------------------- 1 | PPC safe094 2 | "SyncdWR Fre Rfe SyncdRR Fre SyncdWW Wse" 3 | Cycle=SyncdWR Fre Rfe SyncdRR Fre SyncdWW Wse 4 | Relax= 5 | Safe=Fre Wse SyncdWW SyncdWR ACSyncdRR 6 | { 7 | 0:r2=x; 0:r4=y; 8 | 1:r2=y; 1:r4=z; 9 | 2:r2=z; 2:r4=x; 10 | 3:r2=x; 11 | } 12 | P0 | P1 | P2 | P3 ; 13 | lwz r1,0(r2) | li r1,1 | li r1,2 | li r1,1 ; 14 | sync | stw r1,0(r2) | stw r1,0(r2) | stw r1,0(r2) ; 15 | lwz r3,0(r4) | sync | sync | ; 16 | | li r3,1 | lwz r3,0(r4) | ; 17 | | stw r3,0(r4) | | ; 18 | exists 19 | (z=2 /\ 0:r1=1 /\ 0:r3=0 /\ 2:r3=0) 20 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/safe101.litmus: -------------------------------------------------------------------------------- 1 | PPC safe101 2 | "Rfe SyncdRW Rfe SyncdRR Fre SyncdWW Wse" 3 | Cycle=Rfe SyncdRW Rfe SyncdRR Fre SyncdWW Wse 4 | Relax= 5 | Safe=Fre Wse SyncdWW ACSyncdRW ACSyncdRR 6 | { 7 | 0:r2=z; 0:r4=x; 8 | 1:r2=x; 1:r4=y; 9 | 2:r2=y; 2:r4=z; 10 | 3:r2=z; 11 | } 12 | P0 | P1 | P2 | P3 ; 13 | lwz r1,0(r2) | lwz r1,0(r2) | li r1,1 | li r1,2 ; 14 | sync | sync | stw r1,0(r2) | stw r1,0(r2) ; 15 | li r3,1 | lwz r3,0(r4) | sync | ; 16 | stw r3,0(r4) | | li r3,1 | ; 17 | | | stw r3,0(r4) | ; 18 | exists 19 | (z=2 /\ 0:r1=2 /\ 1:r1=1 /\ 1:r3=0) 20 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/safe107.litmus: -------------------------------------------------------------------------------- 1 | PPC safe107 2 | "Rfe SyncdRR Fre SyncsWW Rfe SyncdRW Wse" 3 | Cycle=Rfe SyncdRR Fre SyncsWW Rfe SyncdRW Wse 4 | Relax= 5 | Safe=Fre Wse SyncdRW ACSyncdRR BCSyncsWW 6 | { 7 | 0:r2=y; 0:r4=x; 8 | 1:r2=x; 9 | 2:r2=x; 2:r4=y; 10 | 3:r2=y; 11 | } 12 | P0 | P1 | P2 | P3 ; 13 | lwz r1,0(r2) | li r1,1 | lwz r1,0(r2) | li r1,2 ; 14 | sync | stw r1,0(r2) | sync | stw r1,0(r2) ; 15 | lwz r3,0(r4) | sync | li r3,1 | ; 16 | | li r3,2 | stw r3,0(r4) | ; 17 | | stw r3,0(r2) | | ; 18 | exists 19 | (x=2 /\ y=2 /\ 0:r1=2 /\ 0:r3=0 /\ 2:r1=2) 20 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/safe127.litmus: -------------------------------------------------------------------------------- 1 | PPC safe127 2 | "Rfe SyncdRR Fre SyncdWW Rfe SyncdRW Wse" 3 | Cycle=Rfe SyncdRR Fre SyncdWW Rfe SyncdRW Wse 4 | Relax= 5 | Safe=Fre Wse SyncdRW ACSyncdRR BCSyncdWW 6 | { 7 | 0:r2=z; 0:r4=x; 8 | 1:r2=x; 1:r4=y; 9 | 2:r2=y; 2:r4=z; 10 | 3:r2=z; 11 | } 12 | P0 | P1 | P2 | P3 ; 13 | lwz r1,0(r2) | li r1,1 | lwz r1,0(r2) | li r1,2 ; 14 | sync | stw r1,0(r2) | sync | stw r1,0(r2) ; 15 | lwz r3,0(r4) | sync | li r3,1 | ; 16 | | li r3,1 | stw r3,0(r4) | ; 17 | | stw r3,0(r4) | | ; 18 | exists 19 | (z=2 /\ 0:r1=2 /\ 0:r3=0 /\ 2:r1=1) 20 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/safe144.litmus: -------------------------------------------------------------------------------- 1 | PPC safe144 2 | "SyncdWR Fre Rfe SyncdRW Wse LwSyncdWW Wse" 3 | Cycle=SyncdWR Fre Rfe SyncdRW Wse LwSyncdWW Wse 4 | Relax= 5 | Safe=Fre Wse SyncdWR LwSyncdWW ACSyncdRW 6 | { 7 | 0:r2=x; 0:r4=y; 8 | 1:r2=y; 1:r4=z; 9 | 2:r2=z; 2:r4=x; 10 | 3:r2=x; 11 | } 12 | P0 | P1 | P2 | P3 ; 13 | lwz r1,0(r2) | li r1,2 | li r1,2 | li r1,1 ; 14 | sync | stw r1,0(r2) | stw r1,0(r2) | stw r1,0(r2) ; 15 | li r3,1 | lwsync | sync | ; 16 | stw r3,0(r4) | li r3,1 | lwz r3,0(r4) | ; 17 | | stw r3,0(r4) | | ; 18 | exists 19 | (y=2 /\ z=2 /\ 0:r1=1 /\ 2:r3=0) 20 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/safe159.litmus: -------------------------------------------------------------------------------- 1 | PPC safe159 2 | "Rfe SyncdRW Wse SyncdWR Fre LwSyncdWW Wse" 3 | Cycle=Rfe SyncdRW Wse SyncdWR Fre LwSyncdWW Wse 4 | Relax= 5 | Safe=Fre Wse SyncdWR LwSyncdWW ACSyncdRW 6 | { 7 | 0:r2=z; 0:r4=x; 8 | 1:r2=x; 1:r4=y; 9 | 2:r2=y; 2:r4=z; 10 | 3:r2=z; 11 | } 12 | P0 | P1 | P2 | P3 ; 13 | lwz r1,0(r2) | li r1,2 | li r1,1 | li r1,2 ; 14 | sync | stw r1,0(r2) | stw r1,0(r2) | stw r1,0(r2) ; 15 | li r3,1 | sync | lwsync | ; 16 | stw r3,0(r4) | lwz r3,0(r4) | li r3,1 | ; 17 | | | stw r3,0(r4) | ; 18 | exists 19 | (x=2 /\ z=2 /\ 0:r1=2 /\ 1:r3=0) 20 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/safe201.litmus: -------------------------------------------------------------------------------- 1 | PPC safe201 2 | "Rfe SyncdRW Wse SyncdWW Rfe LwSyncdRW Wse" 3 | Cycle=Rfe SyncdRW Wse SyncdWW Rfe LwSyncdRW Wse 4 | Relax= 5 | Safe=Wse LwSyncdRW ACSyncdRW BCSyncdWW 6 | { 7 | 0:r2=z; 0:r4=x; 8 | 1:r2=x; 1:r4=y; 9 | 2:r2=y; 2:r4=z; 10 | 3:r2=z; 11 | } 12 | P0 | P1 | P2 | P3 ; 13 | lwz r1,0(r2) | li r1,2 | lwz r1,0(r2) | li r1,2 ; 14 | sync | stw r1,0(r2) | lwsync | stw r1,0(r2) ; 15 | li r3,1 | sync | li r3,1 | ; 16 | stw r3,0(r4) | li r3,1 | stw r3,0(r4) | ; 17 | | stw r3,0(r4) | | ; 18 | exists 19 | (x=2 /\ z=2 /\ 0:r1=2 /\ 2:r1=1) 20 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/safe227.litmus: -------------------------------------------------------------------------------- 1 | PPC safe227 2 | "SyncdWW Rfe SyncdRR Fre Rfe SyncdRW Wse" 3 | Cycle=SyncdWW Rfe SyncdRR Fre Rfe SyncdRW Wse 4 | Relax= 5 | Safe=Fre Wse SyncdRR ACSyncdRW BCSyncdWW 6 | { 7 | 0:r2=x; 0:r4=y; 8 | 1:r2=y; 9 | 2:r2=y; 2:r4=z; 10 | 3:r2=z; 3:r4=x; 11 | } 12 | P0 | P1 | P2 | P3 ; 13 | lwz r1,0(r2) | li r1,1 | lwz r1,0(r2) | li r1,2 ; 14 | sync | stw r1,0(r2) | sync | stw r1,0(r2) ; 15 | lwz r3,0(r4) | | li r3,1 | sync ; 16 | | | stw r3,0(r4) | li r3,1 ; 17 | | | | stw r3,0(r4) ; 18 | exists 19 | (z=2 /\ 0:r1=1 /\ 0:r3=0 /\ 2:r1=1) 20 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/safe229.litmus: -------------------------------------------------------------------------------- 1 | PPC safe229 2 | "SyncdWW Rfe SyncsRR Fre Rfe SyncdRW Wse" 3 | Cycle=SyncdWW Rfe SyncsRR Fre Rfe SyncdRW Wse 4 | Relax= 5 | Safe=Fre Wse SyncsRR ACSyncdRW BCSyncdWW 6 | { 7 | 0:r2=x; 8 | 1:r2=x; 9 | 2:r2=x; 2:r4=y; 10 | 3:r2=y; 3:r4=x; 11 | } 12 | P0 | P1 | P2 | P3 ; 13 | lwz r1,0(r2) | li r1,2 | lwz r1,0(r2) | li r1,2 ; 14 | sync | stw r1,0(r2) | sync | stw r1,0(r2) ; 15 | lwz r3,0(r2) | | li r3,1 | sync ; 16 | | | stw r3,0(r4) | li r3,1 ; 17 | | | | stw r3,0(r4) ; 18 | exists 19 | (x=2 /\ y=2 /\ 0:r1=1 /\ 0:r3=1 /\ 2:r1=2) 20 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/safe407.litmus: -------------------------------------------------------------------------------- 1 | PPC safe407 2 | "Rfe SyncdRR Fre SyncsWW Rfe SyncdRR Fre" 3 | Cycle=Rfe SyncdRR Fre SyncsWW Rfe SyncdRR Fre 4 | Relax= 5 | Safe=Fre SyncdRR ACSyncdRR BCSyncsWW 6 | { 7 | 0:r2=y; 0:r4=x; 8 | 1:r2=x; 9 | 2:r2=x; 2:r4=y; 10 | 3:r2=y; 11 | } 12 | P0 | P1 | P2 | P3 ; 13 | lwz r1,0(r2) | li r1,1 | lwz r1,0(r2) | li r1,1 ; 14 | sync | stw r1,0(r2) | sync | stw r1,0(r2) ; 15 | lwz r3,0(r4) | sync | lwz r3,0(r4) | ; 16 | | li r3,2 | | ; 17 | | stw r3,0(r2) | | ; 18 | exists 19 | (x=2 /\ 0:r1=1 /\ 0:r3=0 /\ 2:r1=2 /\ 2:r3=0) 20 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/safe421.litmus: -------------------------------------------------------------------------------- 1 | PPC safe421 2 | "Rfe SyncsRR Fre SyncdWW Rfe SyncdRR Fre" 3 | Cycle=Rfe SyncsRR Fre SyncdWW Rfe SyncdRR Fre 4 | Relax= 5 | Safe=Fre SyncdRR ACSyncsRR BCSyncdWW 6 | { 7 | 0:r2=y; 8 | 1:r2=y; 1:r4=x; 9 | 2:r2=x; 2:r4=y; 10 | 3:r2=y; 11 | } 12 | P0 | P1 | P2 | P3 ; 13 | lwz r1,0(r2) | li r1,2 | lwz r1,0(r2) | li r1,1 ; 14 | sync | stw r1,0(r2) | sync | stw r1,0(r2) ; 15 | lwz r3,0(r2) | sync | lwz r3,0(r4) | ; 16 | | li r3,1 | | ; 17 | | stw r3,0(r4) | | ; 18 | exists 19 | (y=2 /\ 0:r1=1 /\ 0:r3=1 /\ 2:r1=1 /\ 2:r3=0) 20 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/safe423.litmus: -------------------------------------------------------------------------------- 1 | PPC safe423 2 | "Rfe SyncdRR Fre SyncdWW Rfe SyncdRR Fre" 3 | Cycle=Rfe SyncdRR Fre SyncdWW Rfe SyncdRR Fre 4 | Relax= 5 | Safe=Fre SyncdRR ACSyncdRR BCSyncdWW 6 | { 7 | 0:r2=z; 0:r4=x; 8 | 1:r2=x; 1:r4=y; 9 | 2:r2=y; 2:r4=z; 10 | 3:r2=z; 11 | } 12 | P0 | P1 | P2 | P3 ; 13 | lwz r1,0(r2) | li r1,1 | lwz r1,0(r2) | li r1,1 ; 14 | sync | stw r1,0(r2) | sync | stw r1,0(r2) ; 15 | lwz r3,0(r4) | sync | lwz r3,0(r4) | ; 16 | | li r3,1 | | ; 17 | | stw r3,0(r4) | | ; 18 | exists 19 | (0:r1=1 /\ 0:r3=0 /\ 2:r1=1 /\ 2:r3=0) 20 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/safe447.litmus: -------------------------------------------------------------------------------- 1 | PPC safe447 2 | "Rfe SyncdRR Fre SyncdWW Rfe SyncsRR Fre" 3 | Cycle=Rfe SyncdRR Fre SyncdWW Rfe SyncsRR Fre 4 | Relax= 5 | Safe=Fre SyncsRR ACSyncdRR BCSyncdWW 6 | { 7 | 0:r2=y; 0:r4=x; 8 | 1:r2=x; 1:r4=y; 9 | 2:r2=y; 10 | 3:r2=y; 11 | } 12 | P0 | P1 | P2 | P3 ; 13 | lwz r1,0(r2) | li r1,1 | lwz r1,0(r2) | li r1,2 ; 14 | sync | stw r1,0(r2) | sync | stw r1,0(r2) ; 15 | lwz r3,0(r4) | sync | lwz r3,0(r2) | ; 16 | | li r3,1 | | ; 17 | | stw r3,0(r4) | | ; 18 | exists 19 | (y=2 /\ 0:r1=2 /\ 0:r3=0 /\ 2:r1=1 /\ 2:r3=1) 20 | -------------------------------------------------------------------------------- /case-studies/repair/enumerate.rkt: -------------------------------------------------------------------------------- 1 | #lang rosette 2 | 3 | (require "../../frameworks/madorhaim/enumerate.rkt" 4 | "../../frameworks/madorhaim/mnr.rkt" 5 | "../../memsynth/memsynth.rkt" 6 | "../../litmus/tests/madorhaim.rkt") 7 | 8 | (provide enumerate) 9 | 10 | (define (enumerate framework tests [pred? (const #t)]) 11 | (for/fold ([ret (hash)]) ([i 4445] #:when (and (valid-model-number? i) (pred? i))) 12 | (define M (model-number->model i)) 13 | (define all-results (for/list ([T tests]) 14 | (parameterize ([term-cache (hash-copy (term-cache))]) 15 | (allowed? framework T M)))) 16 | (hash-set ret all-results (append (hash-ref ret all-results '()) (list i))))) 17 | -------------------------------------------------------------------------------- /case-studies/performance/verification/herd/tests/aclwdrr011.litmus: -------------------------------------------------------------------------------- 1 | PPC aclwdrr011 2 | "Fre SyncdWW Rfe LwSyncdRR Fre Rfe LwSyncdRR" 3 | Cycle=Fre SyncdWW Rfe LwSyncdRR Fre Rfe LwSyncdRR 4 | Relax=ACLwSyncdRR 5 | Safe=Fre SyncdWW 6 | { 7 | 0:r2=z; 0:r4=x; 8 | 1:r2=x; 1:r4=y; 9 | 2:r2=y; 10 | 3:r2=y; 3:r4=z; 11 | } 12 | P0 | P1 | P2 | P3 ; 13 | li r1,1 | lwz r1,0(r2) | li r1,1 | lwz r1,0(r2) ; 14 | stw r1,0(r2) | lwsync | stw r1,0(r2) | lwsync ; 15 | sync | lwz r3,0(r4) | | lwz r3,0(r4) ; 16 | li r3,1 | | | ; 17 | stw r3,0(r4) | | | ; 18 | exists 19 | (1:r1=1 /\ 1:r3=0 /\ 3:r1=1 /\ 3:r3=0) 20 | --------------------------------------------------------------------------------