Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add Liveness for PTX and Vulkan #541

Merged
merged 33 commits into from
Oct 24, 2023
Merged
Show file tree
Hide file tree
Changes from 23 commits
Commits
Show all changes
33 commits
Select commit Hold shift + click to select a range
87df06c
Add some local instructions and new tests for PTX
hernan-poncedeleon Oct 1, 2023
a9b7862
Add PTX's CAS
hernan-poncedeleon Oct 1, 2023
a8452a0
Another example from GPU paper
hernan-poncedeleon Oct 1, 2023
180b59b
MP with and without avvis
hernan-poncedeleon Oct 2, 2023
f6b09b1
Feedback implemented
hernan-poncedeleon Oct 3, 2023
a5ec772
Plus/Minus/Mult -> Add/Sub/Mul
hernan-poncedeleon Oct 3, 2023
7756027
Mult -> Mul
hernan-poncedeleon Oct 3, 2023
075f02d
add constant as parameter for bne/beq
tonghaining Oct 3, 2023
ba86ad9
add AtomExch
tonghaining Oct 3, 2023
fa36d92
add PTX Exch tests
tonghaining Oct 3, 2023
2f5ea08
add cadp tests
tonghaining Oct 4, 2023
192e378
change atomExch constant to value, add license
tonghaining Oct 4, 2023
0a9b9d4
override getPropertyProvider
tonghaining Oct 4, 2023
ce700a0
Merge branch 'development' into liveness
tonghaining Oct 4, 2023
ea6007d
remove atom variable of Vulkan rmw, add README to liveness tests
tonghaining Oct 5, 2023
8c00a4a
remove liveness test licence from README
tonghaining Oct 5, 2023
40885e7
change livenessTest to Property.LIVENESS
tonghaining Oct 5, 2023
744f3e6
change beq to bne
tonghaining Oct 6, 2023
9c69b38
rewrite PTX tests with exceptions
tonghaining Oct 6, 2023
af2edc5
rewrite Vulkan tests with exceptions
tonghaining Oct 6, 2023
01743ac
remove unsupported tests
tonghaining Oct 6, 2023
24e3ec9
Merge branch 'development' into liveness
tonghaining Oct 7, 2023
9d2c9b5
Merge branch 'development' into liveness
tonghaining Oct 23, 2023
54bcd97
update SL tests
tonghaining Oct 24, 2023
a9bb581
add ptx6_0 liveness tests
tonghaining Oct 24, 2023
91fdfc8
update liveness expectation
tonghaining Oct 24, 2023
af42898
Add exchange rule to PTX visitor
hernan-poncedeleon Oct 24, 2023
149aa46
Add XF-Barrier to liveness tests
hernan-poncedeleon Oct 24, 2023
296c67e
Rename folder names
hernan-poncedeleon Oct 24, 2023
f41addd
Rename folder names
hernan-poncedeleon Oct 24, 2023
ac94426
add CADP to check expectation
tonghaining Oct 24, 2023
e2667f2
Rename folder names
hernan-poncedeleon Oct 24, 2023
4f99147
Format
hernan-poncedeleon Oct 24, 2023
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
6 changes: 6 additions & 0 deletions dartagnan/src/main/antlr4/LitmusPTX.g4
Original file line number Diff line number Diff line change
Expand Up @@ -157,6 +157,7 @@ barrier
atomInstruction
: atomOp
| atomCAS
| atomExchange
;

atomOp
Expand All @@ -167,6 +168,10 @@ atomCAS
: atom Period mo Period scope Period Cas register Comma location Comma value Comma value
;

atomExchange
: atom Period mo Period scope Period Exch register Comma location Comma value
;

redInstruction
: red Period mo Period scope Period operation location Comma value
;
Expand Down Expand Up @@ -317,6 +322,7 @@ Or : 'or';
Xor : 'xor';

Cas : 'cas';
Exch : 'exch';

Proxy : 'proxy';
Generic : 'generic';
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@
import com.dat3m.dartagnan.program.event.EventFactory;
import com.dat3m.dartagnan.program.event.Tag;
import com.dat3m.dartagnan.program.event.arch.ptx.PTXAtomCAS;
import com.dat3m.dartagnan.program.event.arch.ptx.PTXAtomExch;
import com.dat3m.dartagnan.program.event.arch.ptx.PTXAtomOp;
import com.dat3m.dartagnan.program.event.arch.ptx.PTXRedOp;
import com.dat3m.dartagnan.program.event.core.*;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -284,7 +284,6 @@ public Object visitRmwValue(LitmusVulkanParser.RmwValueContext ctx) {
Register register = (Register) ctx.register().accept(this);
MemoryObject location = programBuilder.getOrNewMemoryObject(ctx.location().getText());
Expression value = (Expression) ctx.value().accept(this);
Boolean atomic = true; // RMW is always atomic
String mo = (ctx.mo() != null) ? ctx.mo().content : "";
String avvis = (ctx.avvis() != null) ? ctx.avvis().content : "";
String scope = (ctx.scope() != null) ? ctx.scope().content : "";
Expand All @@ -295,7 +294,7 @@ public Object visitRmwValue(LitmusVulkanParser.RmwValueContext ctx) {
if (!avvis.isEmpty()) {
rmw.addTags(avvis);
}
tagControl(rmw, atomic, mo, avvis, scope, storageClass, storageClassSemantics, avvisSemantics);
tagControl(rmw, true, mo, avvis, scope, storageClass, storageClassSemantics, avvisSemantics);
return programBuilder.addChild(mainThread, rmw);
}

Expand All @@ -304,7 +303,6 @@ public Object visitRmwOp(LitmusVulkanParser.RmwOpContext ctx) {
Register register = (Register) ctx.register().accept(this);
MemoryObject location = programBuilder.getOrNewMemoryObject(ctx.location().getText());
Expression value = (Expression) ctx.value().accept(this);
Boolean atomic = true; // RMW is always atomic
String mo = (ctx.mo() != null) ? ctx.mo().content : "";
String avvis = (ctx.avvis() != null) ? ctx.avvis().content : "";
String scope = (ctx.scope() != null) ? ctx.scope().content : "";
Expand All @@ -316,7 +314,7 @@ public Object visitRmwOp(LitmusVulkanParser.RmwOpContext ctx) {
if (!avvis.isEmpty()) {
rmw.addTags(avvis);
}
tagControl(rmw, atomic, mo, avvis, scope, storageClass, storageClassSemantics, avvisSemantics);
tagControl(rmw, true, mo, avvis, scope, storageClass, storageClassSemantics, avvisSemantics);
return programBuilder.addChild(mainThread, rmw);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
import com.dat3m.dartagnan.program.event.arch.StoreExclusive;
import com.dat3m.dartagnan.program.event.arch.lisa.LISARMW;
import com.dat3m.dartagnan.program.event.arch.ptx.PTXAtomCAS;
import com.dat3m.dartagnan.program.event.arch.ptx.PTXAtomExch;
import com.dat3m.dartagnan.program.event.arch.ptx.PTXAtomOp;
import com.dat3m.dartagnan.program.event.arch.vulkan.VulkanRMWOp;
import com.dat3m.dartagnan.program.event.core.FenceWithId;
Expand Down Expand Up @@ -707,6 +708,13 @@ public static PTXAtomCAS newAtomCAS(Expression address, Register register, Expre
return atom;
}

public static PTXAtomExch newAtomExch(Expression address, Register register,
Expression value, String mo, String scope) {
PTXAtomExch atom = new PTXAtomExch(register, address, value, mo);
atom.addTags(scope);
return atom;
}

public static PTXRedOp newRedOp(Expression address, Expression value,
IOpBin op, String mo, String scope) {
// PTX (currently) only generates memory orders ACQ_REL and RLX for red.
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
package com.dat3m.dartagnan.program.event.arch.ptx;

import com.dat3m.dartagnan.expression.Expression;
import com.dat3m.dartagnan.program.Register;
import com.dat3m.dartagnan.program.event.common.RMWXchgBase;
import com.dat3m.dartagnan.program.event.visitors.EventVisitor;

public class PTXAtomExch extends RMWXchgBase {

public PTXAtomExch(Register register, Expression address, Expression value, String mo) {
super(register, address, value, mo);
}

protected PTXAtomExch(PTXAtomExch other) {
super(other);
}

@Override
public String defaultString() {
return String.format("%s := atom_exch_%s(%s, %s)", resultRegister, mo, storeValue, address);
}

@Override
public PTXAtomExch getCopy(){
return new PTXAtomExch(this);
}

@Override
public <T> T accept(EventVisitor<T> visitor) {
return visitor.visitPtxAtomExch(this);
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -102,6 +102,7 @@ public interface EventVisitor<T> {
default T visitPtxRedOp(PTXRedOp e) { return visitMemEvent(e); }
default T visitPtxAtomOp(PTXAtomOp e) { return visitMemEvent(e); }
default T visitPtxAtomCAS(PTXAtomCAS e) { return visitMemEvent(e); }
default T visitPtxAtomExch(PTXAtomExch e) { return visitMemEvent(e); }
default T visitVulkanRMW(VulkanRMW e) { return visitMemEvent(e); }
default T visitVulkanRMWOp(VulkanRMWOp e) { return visitMemEvent(e); }
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
import com.dat3m.dartagnan.program.Register;
import com.dat3m.dartagnan.program.event.Tag;
import com.dat3m.dartagnan.program.event.arch.ptx.PTXAtomCAS;
import com.dat3m.dartagnan.program.event.arch.ptx.PTXAtomExch;
import com.dat3m.dartagnan.program.event.arch.ptx.PTXAtomOp;
import com.dat3m.dartagnan.program.event.arch.ptx.PTXRedOp;
import com.dat3m.dartagnan.program.event.core.Event;
Expand Down Expand Up @@ -59,6 +60,24 @@ public List<Event> visitPtxAtomCAS(PTXAtomCAS e) {
store);
}

// PTX Exch semantics
@Override
public List<Event> visitPtxAtomExch(PTXAtomExch e) {
Register resultRegister = e.getResultRegister();
String mo = e.getMo();
Expression address = e.getAddress();
Register dummy = e.getFunction().newRegister(resultRegister.getType());
Load load = newRMWLoadWithMo(dummy, address, Tag.PTX.loadMO(mo));
RMWStore store = newRMWStoreWithMo(load, address, e.getValue(), Tag.PTX.storeMO(mo));
this.propagateTags(e, load);
this.propagateTags(e, store);
return eventSequence(
load,
store,
newLocal(resultRegister, dummy)
);
}

@Override
public List<Event> visitPtxRedOp(PTXRedOp e) {
Expression address = e.getAddress();
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
package com.dat3m.dartagnan.litmus;

import com.dat3m.dartagnan.configuration.Arch;
import com.dat3m.dartagnan.configuration.Property;
import com.dat3m.dartagnan.utils.Result;
import com.dat3m.dartagnan.utils.rules.Provider;
import com.dat3m.dartagnan.utils.rules.Providers;
import com.dat3m.dartagnan.wmm.Wmm;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;

import java.io.IOException;
import java.util.EnumSet;

@RunWith(Parameterized.class)
public class LitmusPTXv7_5LivenessTest extends AbstractLitmusTest {
hernanponcedeleon marked this conversation as resolved.
Show resolved Hide resolved

public LitmusPTXv7_5LivenessTest(String path, Result expected) {
super(path, expected);
}

@Parameterized.Parameters(name = "{index}: {0}, {1}")
public static Iterable<Object[]> data() throws IOException {
return buildLitmusTests("litmus/PTX/", "PTXv7_5-Liveness");
}

@Override
protected Provider<Arch> getTargetProvider() {
return () -> Arch.PTX;
}

@Override
protected Provider<EnumSet<Property>> getPropertyProvider() {
return Provider.fromSupplier(() -> EnumSet.of(Property.LIVENESS));
}

@Override
protected Provider<Wmm> getWmmProvider() {
return Providers.createWmmFromName(() -> "ptx-v7.5");
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
package com.dat3m.dartagnan.litmus;

import com.dat3m.dartagnan.configuration.Arch;
import com.dat3m.dartagnan.configuration.Property;
import com.dat3m.dartagnan.utils.Result;
import com.dat3m.dartagnan.utils.rules.Provider;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;

import java.io.IOException;
import java.util.EnumSet;

@RunWith(Parameterized.class)
public class LitmusVulkanLivenessTest extends AbstractLitmusTest {

public LitmusVulkanLivenessTest(String path, Result expected) {
super(path, expected);
}

@Parameterized.Parameters(name = "{index}: {0}, {1}")
public static Iterable<Object[]> data() throws IOException {
return buildLitmusTests("litmus/VULKAN/", "VULKAN-Liveness");
}

@Override
protected Provider<Arch> getTargetProvider() {
return () -> Arch.VULKAN;
}

@Override
protected Provider<EnumSet<Property>> getPropertyProvider() {
return Provider.fromSupplier(() -> EnumSet.of(Property.LIVENESS));
}
}
70 changes: 70 additions & 0 deletions dartagnan/src/test/resources/PTXv7_5-Liveness-expected.csv
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
litmus/PTX/Liveness/2_threads_2_instructions/4_simple.litmus,1
litmus/PTX/Liveness/2_threads_2_instructions/5_simple.litmus,1
litmus/PTX/Liveness/2_threads_3_instructions/4_simple.litmus,1
litmus/PTX/Liveness/2_threads_3_instructions/10_simple.litmus,1
litmus/PTX/Liveness/2_threads_3_instructions/14_simple.litmus,1
litmus/PTX/Liveness/2_threads_3_instructions/19_simple.litmus,1
litmus/PTX/Liveness/2_threads_3_instructions/22_simple.litmus,1
litmus/PTX/Liveness/2_threads_3_instructions/25_simple.litmus,1
litmus/PTX/Liveness/2_threads_3_instructions/30_simple.litmus,1
litmus/PTX/Liveness/2_threads_3_instructions/46_simple.litmus,1
litmus/PTX/Liveness/2_threads_3_instructions/50_simple.litmus,1
litmus/PTX/Liveness/2_threads_3_instructions/58_simple.litmus,1
litmus/PTX/Liveness/2_threads_4_instructions/30_simple.litmus,1
litmus/PTX/Liveness/2_threads_4_instructions/31_simple.litmus,1
litmus/PTX/Liveness/2_threads_4_instructions/46_simple.litmus,1
litmus/PTX/Liveness/2_threads_4_instructions/47_simple.litmus,1
litmus/PTX/Liveness/2_threads_4_instructions/48_simple.litmus,1
litmus/PTX/Liveness/2_threads_4_instructions/49_simple.litmus,1
litmus/PTX/Liveness/2_threads_4_instructions/66_simple.litmus,1
litmus/PTX/Liveness/2_threads_4_instructions/67_simple.litmus,1
litmus/PTX/Liveness/2_threads_4_instructions/68_simple.litmus,1
litmus/PTX/Liveness/2_threads_4_instructions/69_simple.litmus,1
litmus/PTX/Liveness/2_threads_4_instructions/74_simple.litmus,1
litmus/PTX/Liveness/2_threads_4_instructions/75_simple.litmus,1
litmus/PTX/Liveness/2_threads_4_instructions/76_simple.litmus,1
litmus/PTX/Liveness/2_threads_4_instructions/77_simple.litmus,1
litmus/PTX/Liveness/2_threads_4_instructions/96_simple.litmus,1
litmus/PTX/Liveness/2_threads_4_instructions/97_simple.litmus,1
litmus/PTX/Liveness/2_threads_4_instructions/102_simple.litmus,1
litmus/PTX/Liveness/2_threads_4_instructions/103_simple.litmus,1
litmus/PTX/Liveness/2_threads_4_instructions/120_simple.litmus,1
litmus/PTX/Liveness/2_threads_4_instructions/121_simple.litmus,1
litmus/PTX/Liveness/2_threads_4_instructions/124_simple.litmus,1
litmus/PTX/Liveness/2_threads_4_instructions/125_simple.litmus,1
litmus/PTX/Liveness/2_threads_4_instructions/126_simple.litmus,1
litmus/PTX/Liveness/2_threads_4_instructions/127_simple.litmus,1
litmus/PTX/Liveness/2_threads_4_instructions/136_simple.litmus,1
litmus/PTX/Liveness/2_threads_4_instructions/137_simple.litmus,1
litmus/PTX/Liveness/2_threads_4_instructions/138_simple.litmus,1
litmus/PTX/Liveness/2_threads_4_instructions/139_simple.litmus,1
litmus/PTX/Liveness/3_threads_3_instructions/9_simple.litmus,1
litmus/PTX/Liveness/3_threads_3_instructions/10_simple.litmus,1
litmus/PTX/Liveness/3_threads_3_instructions/11_simple.litmus,1
litmus/PTX/Liveness/3_threads_3_instructions/18_simple.litmus,1
litmus/PTX/Liveness/3_threads_3_instructions/19_simple.litmus,1
litmus/PTX/Liveness/3_threads_3_instructions/20_simple.litmus,1
litmus/PTX/Liveness/3_threads_4_instructions/0_simple.litmus,1
litmus/PTX/Liveness/3_threads_4_instructions/1_simple.litmus,1
litmus/PTX/Liveness/3_threads_4_instructions/2_simple.litmus,1
litmus/PTX/Liveness/3_threads_4_instructions/3_simple.litmus,1
litmus/PTX/Liveness/3_threads_4_instructions/4_simple.litmus,1
litmus/PTX/Liveness/3_threads_4_instructions/5_simple.litmus,1
litmus/PTX/Liveness/3_threads_4_instructions/6_simple.litmus,1
litmus/PTX/Liveness/3_threads_4_instructions/7_simple.litmus,1
litmus/PTX/Liveness/3_threads_4_instructions/8_simple.litmus,1
litmus/PTX/Liveness/3_threads_4_instructions/9_simple.litmus,1
litmus/PTX/Liveness/3_threads_4_instructions/10_simple.litmus,1
litmus/PTX/Liveness/3_threads_4_instructions/11_simple.litmus,1
litmus/PTX/Liveness/3_threads_4_instructions/87_simple.litmus,1
litmus/PTX/Liveness/3_threads_4_instructions/88_simple.litmus,1
litmus/PTX/Liveness/3_threads_4_instructions/89_simple.litmus,1
litmus/PTX/Liveness/3_threads_4_instructions/90_simple.litmus,1
litmus/PTX/Liveness/3_threads_4_instructions/91_simple.litmus,1
litmus/PTX/Liveness/3_threads_4_instructions/92_simple.litmus,1
litmus/PTX/Liveness/3_threads_4_instructions/99_simple.litmus,1
litmus/PTX/Liveness/3_threads_4_instructions/100_simple.litmus,1
litmus/PTX/Liveness/3_threads_4_instructions/101_simple.litmus,1
litmus/PTX/Liveness/3_threads_4_instructions/102_simple.litmus,1
litmus/PTX/Liveness/3_threads_4_instructions/103_simple.litmus,1
litmus/PTX/Liveness/3_threads_4_instructions/104_simple.litmus,1
2 changes: 2 additions & 0 deletions dartagnan/src/test/resources/PTXv7_5-expected.csv
Original file line number Diff line number Diff line change
Expand Up @@ -120,6 +120,8 @@ litmus/PTX/Manual/MP-dlb-no-fence-2.litmus,1
litmus/PTX/Manual/LB-dlb.litmus,0
litmus/PTX/Manual/LB-dlb-no-fence-1.litmus,1
litmus/PTX/Manual/LB-dlb-no-fence-2.litmus,1
litmus/PTX/Manual/SL-cas.litmus,1
litmus/PTX/Manual/SL-future.litmus,1
litmus/PTX/Nvidia/SB+bar-dyn-reg-const.litmus,0
litmus/PTX/Nvidia/SB+bar-sta-reg-const.litmus,1
litmus/PTX/Manual/CoWW-weak.litmus,1
Expand Down
70 changes: 70 additions & 0 deletions dartagnan/src/test/resources/VULKAN-Liveness-expected.csv
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
litmus/VULKAN/Liveness/2_threads_2_instructions/4_simple.litmus,1
litmus/VULKAN/Liveness/2_threads_2_instructions/5_simple.litmus,1
litmus/VULKAN/Liveness/2_threads_3_instructions/4_simple.litmus,1
litmus/VULKAN/Liveness/2_threads_3_instructions/10_simple.litmus,1
litmus/VULKAN/Liveness/2_threads_3_instructions/14_simple.litmus,1
litmus/VULKAN/Liveness/2_threads_3_instructions/19_simple.litmus,1
litmus/VULKAN/Liveness/2_threads_3_instructions/22_simple.litmus,1
litmus/VULKAN/Liveness/2_threads_3_instructions/25_simple.litmus,1
litmus/VULKAN/Liveness/2_threads_3_instructions/30_simple.litmus,1
litmus/VULKAN/Liveness/2_threads_3_instructions/46_simple.litmus,1
litmus/VULKAN/Liveness/2_threads_3_instructions/50_simple.litmus,1
litmus/VULKAN/Liveness/2_threads_3_instructions/58_simple.litmus,1
litmus/VULKAN/Liveness/2_threads_4_instructions/30_simple.litmus,1
litmus/VULKAN/Liveness/2_threads_4_instructions/31_simple.litmus,1
litmus/VULKAN/Liveness/2_threads_4_instructions/46_simple.litmus,1
litmus/VULKAN/Liveness/2_threads_4_instructions/47_simple.litmus,1
litmus/VULKAN/Liveness/2_threads_4_instructions/48_simple.litmus,1
litmus/VULKAN/Liveness/2_threads_4_instructions/49_simple.litmus,1
litmus/VULKAN/Liveness/2_threads_4_instructions/66_simple.litmus,1
litmus/VULKAN/Liveness/2_threads_4_instructions/67_simple.litmus,1
litmus/VULKAN/Liveness/2_threads_4_instructions/68_simple.litmus,1
litmus/VULKAN/Liveness/2_threads_4_instructions/69_simple.litmus,1
litmus/VULKAN/Liveness/2_threads_4_instructions/74_simple.litmus,1
litmus/VULKAN/Liveness/2_threads_4_instructions/75_simple.litmus,1
litmus/VULKAN/Liveness/2_threads_4_instructions/76_simple.litmus,1
litmus/VULKAN/Liveness/2_threads_4_instructions/77_simple.litmus,1
litmus/VULKAN/Liveness/2_threads_4_instructions/96_simple.litmus,1
litmus/VULKAN/Liveness/2_threads_4_instructions/97_simple.litmus,1
litmus/VULKAN/Liveness/2_threads_4_instructions/102_simple.litmus,1
litmus/VULKAN/Liveness/2_threads_4_instructions/103_simple.litmus,1
litmus/VULKAN/Liveness/2_threads_4_instructions/120_simple.litmus,1
litmus/VULKAN/Liveness/2_threads_4_instructions/121_simple.litmus,1
litmus/VULKAN/Liveness/2_threads_4_instructions/124_simple.litmus,1
litmus/VULKAN/Liveness/2_threads_4_instructions/125_simple.litmus,1
litmus/VULKAN/Liveness/2_threads_4_instructions/126_simple.litmus,1
litmus/VULKAN/Liveness/2_threads_4_instructions/127_simple.litmus,1
litmus/VULKAN/Liveness/2_threads_4_instructions/136_simple.litmus,1
litmus/VULKAN/Liveness/2_threads_4_instructions/137_simple.litmus,1
litmus/VULKAN/Liveness/2_threads_4_instructions/138_simple.litmus,1
litmus/VULKAN/Liveness/2_threads_4_instructions/139_simple.litmus,1
litmus/VULKAN/Liveness/3_threads_3_instructions/9_simple.litmus,1
litmus/VULKAN/Liveness/3_threads_3_instructions/10_simple.litmus,1
litmus/VULKAN/Liveness/3_threads_3_instructions/11_simple.litmus,1
litmus/VULKAN/Liveness/3_threads_3_instructions/18_simple.litmus,1
litmus/VULKAN/Liveness/3_threads_3_instructions/19_simple.litmus,1
litmus/VULKAN/Liveness/3_threads_3_instructions/20_simple.litmus,1
litmus/VULKAN/Liveness/3_threads_4_instructions/0_simple.litmus,1
litmus/VULKAN/Liveness/3_threads_4_instructions/1_simple.litmus,1
litmus/VULKAN/Liveness/3_threads_4_instructions/2_simple.litmus,1
litmus/VULKAN/Liveness/3_threads_4_instructions/3_simple.litmus,1
litmus/VULKAN/Liveness/3_threads_4_instructions/4_simple.litmus,1
litmus/VULKAN/Liveness/3_threads_4_instructions/5_simple.litmus,1
litmus/VULKAN/Liveness/3_threads_4_instructions/6_simple.litmus,1
litmus/VULKAN/Liveness/3_threads_4_instructions/7_simple.litmus,1
litmus/VULKAN/Liveness/3_threads_4_instructions/8_simple.litmus,1
litmus/VULKAN/Liveness/3_threads_4_instructions/9_simple.litmus,1
litmus/VULKAN/Liveness/3_threads_4_instructions/10_simple.litmus,1
litmus/VULKAN/Liveness/3_threads_4_instructions/11_simple.litmus,1
litmus/VULKAN/Liveness/3_threads_4_instructions/87_simple.litmus,1
litmus/VULKAN/Liveness/3_threads_4_instructions/88_simple.litmus,1
litmus/VULKAN/Liveness/3_threads_4_instructions/89_simple.litmus,1
litmus/VULKAN/Liveness/3_threads_4_instructions/90_simple.litmus,1
litmus/VULKAN/Liveness/3_threads_4_instructions/91_simple.litmus,1
litmus/VULKAN/Liveness/3_threads_4_instructions/92_simple.litmus,1
litmus/VULKAN/Liveness/3_threads_4_instructions/99_simple.litmus,1
litmus/VULKAN/Liveness/3_threads_4_instructions/100_simple.litmus,1
litmus/VULKAN/Liveness/3_threads_4_instructions/101_simple.litmus,1
litmus/VULKAN/Liveness/3_threads_4_instructions/102_simple.litmus,1
litmus/VULKAN/Liveness/3_threads_4_instructions/103_simple.litmus,1
litmus/VULKAN/Liveness/3_threads_4_instructions/104_simple.litmus,1
Loading
Loading