├── 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 |
--------------------------------------------------------------------------------