diff --git a/benchmarks/progress/progressFair.c b/benchmarks/progress/progressFair.c new file mode 100644 index 0000000000..b747c239f0 --- /dev/null +++ b/benchmarks/progress/progressFair.c @@ -0,0 +1,27 @@ +#include +#include +#include +#include + +// Required progress: fair + +atomic_int x = 0; + +void *thread_1(void *unused) +{ + while (x != 1); + return 0; +} + +void *thread_2(void *unused) +{ + x = 1; // May not get scheduled under any weak progress model +} + +int main() +{ + pthread_t t1, t2; + pthread_create(&t1, NULL, thread_1, NULL); + pthread_create(&t2, NULL, thread_2, NULL); + return 0; +} diff --git a/benchmarks/progress/progressHSA.c b/benchmarks/progress/progressHSA.c new file mode 100644 index 0000000000..533cea6c68 --- /dev/null +++ b/benchmarks/progress/progressHSA.c @@ -0,0 +1,27 @@ +#include +#include +#include +#include + +// Required progress: HSA + +atomic_int x = 0; + +void *thread_1(void *unused) +{ + x = 1; // OBE might not schedule this thread +} + +void *thread_2(void *unused) +{ + while (x != 1); + return 0; +} + +int main() +{ + pthread_t t1, t2; + pthread_create(&t1, NULL, thread_1, NULL); + pthread_create(&t2, NULL, thread_2, NULL); + return 0; +} diff --git a/benchmarks/progress/progressOBE-HSA.c b/benchmarks/progress/progressOBE-HSA.c new file mode 100644 index 0000000000..3e37c2c673 --- /dev/null +++ b/benchmarks/progress/progressOBE-HSA.c @@ -0,0 +1,24 @@ +#include +#include +#include +#include + +// Required progress: HSA or OBE (stronger than unfair) + +atomic_int x = 0; + +void *thread_1(void *unused) +{ + while (x != 0); + return 0; +} + +int main() +{ + pthread_t t1, t2; + pthread_create(&t1, NULL, thread_1, NULL); + x = 1; + // Under totally unfair scheduling, we can stop here so that T1 spins forever + x = 0; + return 0; +} diff --git a/benchmarks/progress/progressOBE.c b/benchmarks/progress/progressOBE.c new file mode 100644 index 0000000000..a3bb6d058f --- /dev/null +++ b/benchmarks/progress/progressOBE.c @@ -0,0 +1,29 @@ +#include +#include +#include +#include + +// Required progress: OBE + +atomic_int x = 0; + +void *thread_1(void *unused) +{ + while (x != 0); + return 0; +} + +void *thread_2(void *unused) +{ + x = 1; + // HSA may stop here causing a liveness issue (OBE cannot do this) + x = 0; +} + +int main() +{ + pthread_t t1, t2; + pthread_create(&t1, NULL, thread_1, NULL); + pthread_create(&t2, NULL, thread_2, NULL); + return 0; +} diff --git a/benchmarks/progress/progressUnfair.c b/benchmarks/progress/progressUnfair.c new file mode 100644 index 0000000000..d68058e029 --- /dev/null +++ b/benchmarks/progress/progressUnfair.c @@ -0,0 +1,22 @@ +#include +#include +#include +#include + +atomic_int x = 0; + +// Required progress: Unfair (terminates under all progress models) + +void *thread_1(void *unused) +{ + while (x != 1); + return 0; +} + +int main() +{ + pthread_t t1, t2; + x = 1; + pthread_create(&t1, NULL, thread_1, NULL); + return 0; +} diff --git a/dartagnan/src/main/java/com/dat3m/dartagnan/Dartagnan.java b/dartagnan/src/main/java/com/dat3m/dartagnan/Dartagnan.java index 161486f7cd..11d0695819 100644 --- a/dartagnan/src/main/java/com/dat3m/dartagnan/Dartagnan.java +++ b/dartagnan/src/main/java/com/dat3m/dartagnan/Dartagnan.java @@ -130,6 +130,7 @@ public static void main(String[] args) throws Exception { VerificationTaskBuilder builder = VerificationTask.builder() .withConfig(config) + .withProgressModel(o.getProgressModel()) .withWitness(witness); // If the arch has been set during parsing (this only happens for litmus tests) // and the user did not explicitly add the target option, we use the one diff --git a/dartagnan/src/main/java/com/dat3m/dartagnan/configuration/OptionNames.java b/dartagnan/src/main/java/com/dat3m/dartagnan/configuration/OptionNames.java index 18a0ca89fc..b4aeef42c3 100644 --- a/dartagnan/src/main/java/com/dat3m/dartagnan/configuration/OptionNames.java +++ b/dartagnan/src/main/java/com/dat3m/dartagnan/configuration/OptionNames.java @@ -15,6 +15,7 @@ public class OptionNames { public static final String SMTLIB2 = "smtlib2"; // Modeling Options + public static final String PROGRESSMODEL = "modeling.progress"; public static final String THREAD_CREATE_ALWAYS_SUCCEEDS = "modeling.threadCreateAlwaysSucceeds"; public static final String RECURSION_BOUND = "modeling.recursionBound"; public static final String MEMORY_IS_ZEROED = "modeling.memoryIsZeroed"; diff --git a/dartagnan/src/main/java/com/dat3m/dartagnan/configuration/ProgressModel.java b/dartagnan/src/main/java/com/dat3m/dartagnan/configuration/ProgressModel.java new file mode 100644 index 0000000000..2a3d808a3c --- /dev/null +++ b/dartagnan/src/main/java/com/dat3m/dartagnan/configuration/ProgressModel.java @@ -0,0 +1,22 @@ +package com.dat3m.dartagnan.configuration; + +import java.util.Arrays; + +public enum ProgressModel { + FAIR, // All threads are fairly scheduled + HSA, // Lowest id thread gets fairly scheduled. + OBE, // Threads that made at least one step get fairly scheduled. + UNFAIR; // No fair scheduling + + public static ProgressModel getDefault() { + return FAIR; + } + + // Used to decide the order shown by the selector in the UI + public static ProgressModel[] orderedValues() { + ProgressModel[] order = {FAIR, HSA, OBE, UNFAIR}; + // Be sure no element is missing + assert (Arrays.asList(order).containsAll(Arrays.asList(values()))); + return order; + } +} diff --git a/dartagnan/src/main/java/com/dat3m/dartagnan/encoding/EncodingContext.java b/dartagnan/src/main/java/com/dat3m/dartagnan/encoding/EncodingContext.java index fb41926838..0630de7760 100644 --- a/dartagnan/src/main/java/com/dat3m/dartagnan/encoding/EncodingContext.java +++ b/dartagnan/src/main/java/com/dat3m/dartagnan/encoding/EncodingContext.java @@ -1,5 +1,6 @@ package com.dat3m.dartagnan.encoding; +import com.dat3m.dartagnan.configuration.ProgressModel; import com.dat3m.dartagnan.expression.Expression; import com.dat3m.dartagnan.expression.Type; import com.dat3m.dartagnan.expression.integers.IntCmpOp; @@ -369,7 +370,11 @@ public Formula makeLiteral(Type type, BigInteger value) { } private void initialize() { - if (shouldMergeCFVars) { + // Only for the standard fair progress model we can merge CF variables. + // TODO: It would also be possible for OBE/HSA in some cases if we refine the cf-equivalence classes + // to classes per thread. + final boolean mergeCFVars = shouldMergeCFVars && verificationTask.getProgressModel() == ProgressModel.FAIR; + if (mergeCFVars) { for (BranchEquivalence.Class cls : analysisContext.get(BranchEquivalence.class).getAllEquivalenceClasses()) { BooleanFormula v = booleanFormulaManager.makeVariable("cf " + cls.getRepresentative().getGlobalId()); for (Event e : cls) { diff --git a/dartagnan/src/main/java/com/dat3m/dartagnan/encoding/ProgramEncoder.java b/dartagnan/src/main/java/com/dat3m/dartagnan/encoding/ProgramEncoder.java index d8d65418af..2836d3cf57 100644 --- a/dartagnan/src/main/java/com/dat3m/dartagnan/encoding/ProgramEncoder.java +++ b/dartagnan/src/main/java/com/dat3m/dartagnan/encoding/ProgramEncoder.java @@ -1,5 +1,6 @@ package com.dat3m.dartagnan.encoding; +import com.dat3m.dartagnan.configuration.ProgressModel; import com.dat3m.dartagnan.expression.Expression; import com.dat3m.dartagnan.expression.type.IntegerType; import com.dat3m.dartagnan.program.Program; @@ -14,12 +15,14 @@ import com.dat3m.dartagnan.program.event.Tag; import com.dat3m.dartagnan.program.event.core.CondJump; import com.dat3m.dartagnan.program.event.core.ControlBarrier; +import com.dat3m.dartagnan.program.event.core.Init; import com.dat3m.dartagnan.program.event.core.Label; import com.dat3m.dartagnan.program.event.core.threading.ThreadStart; import com.dat3m.dartagnan.program.memory.Memory; import com.dat3m.dartagnan.program.memory.MemoryObject; import com.dat3m.dartagnan.program.misc.NonDetValue; import com.google.common.base.Preconditions; +import com.google.common.collect.Lists; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.sosy_lab.common.configuration.InvalidConfigurationException; @@ -81,32 +84,6 @@ public BooleanFormula encodeFullProgram() { encodeDependencies()); } - public BooleanFormula encodeControlBarriers() { - BooleanFormulaManager bmgr = context.getBooleanFormulaManager(); - BooleanFormula enc = bmgr.makeTrue(); - Map> groups = context.getTask().getProgram().getThreads().stream() - .filter(Thread::hasScope) - .collect(groupingBy(this::getWorkgroupId, - flatMapping(t -> t.getEvents(ControlBarrier.class).stream(), toList()))); - - for (List events : groups.values()) { - for (ControlBarrier e1 : events) { - Expression id1 = e1.getId(); - BooleanFormula allCF = context.controlFlow(e1); - for (ControlBarrier e2 : events) { - if (!e1.getThread().equals(e2.getThread())) { - Expression id2 = e2.getId(); - BooleanFormula sameId = context.equal(context.encodeExpressionAt(id1, e1), context.encodeExpressionAt(id2, e2)); - BooleanFormula cf = bmgr.or(context.controlFlow(e2), bmgr.not(sameId)); - allCF = bmgr.and(allCF, cf); - } - } - enc = bmgr.and(enc, bmgr.equivalence(allCF, context.execution(e1))); - } - } - return enc; - } - public BooleanFormula encodeConstants() { List enc = new ArrayList<>(); for (NonDetValue value : context.getTask().getProgram().getConstants()) { @@ -123,58 +100,184 @@ public BooleanFormula encodeConstants() { return context.getBooleanFormulaManager().and(enc); } + // =============================== Control flow ============================== + + private boolean isInitThread(Thread thread) { + return thread.getEntry().getSuccessor() instanceof Init; + } + + /* + A thread is enabled if it has no creator or the corresponding ThreadCreate + event was executed (and didn't fail spuriously). + // TODO: We could make ThreadCreate "not executed" if it fails rather than guessing the success state here. + // FIXME: The guessing allows for mismatches: the spawning may succeed but the guess says it doesn't. + */ + private BooleanFormula threadIsEnabled(Thread thread) { + final BooleanFormulaManager bmgr = context.getBooleanFormulaManager(); + final ThreadStart start = thread.getEntry(); + if (!start.isSpawned()) { + return bmgr.makeTrue(); + } else if (!start.mayFailSpuriously()) { + return context.execution(start.getCreator()); + } else { + final String spawnSuccessVarName = "__spawnSuccess#" + thread.getId(); + return bmgr.and(context.execution(start.getCreator()), bmgr.makeVariable(spawnSuccessVarName)); + } + } + + private BooleanFormula threadHasStarted(Thread thread) { + return context.execution(thread.getEntry()); + } + + // NOTE: A thread that was never spawned is also non-terminating. + private BooleanFormula threadHasTerminated(Thread thread) { + final BooleanFormulaManager bmgr = context.getBooleanFormulaManager(); + return bmgr.and( + context.execution(thread.getExit()), // Also guarantees that we are not stuck in a barrier + bmgr.not(threadIsStuckInLoop(thread)) + ); + } + + // NOTE: Stuckness also considers bound events, i.e., insufficiently unrolled loops. + private BooleanFormula threadIsStuckInLoop(Thread thread) { + final BooleanFormulaManager bmgr = context.getBooleanFormulaManager(); + final List nonTerminationWitnesses = new ArrayList<>(); + for (CondJump jump : thread.getEvents(CondJump.class)) { + if (jump.hasTag(Tag.NONTERMINATION)) { + nonTerminationWitnesses.add(bmgr.and( + context.execution(jump), + context.jumpCondition(jump) + )); + } + } + + return bmgr.or(nonTerminationWitnesses); + } + + private BooleanFormula barrierIsBlocking(ControlBarrier barrier) { + final BooleanFormulaManager bmgr = context.getFormulaManager().getBooleanFormulaManager(); + return bmgr.and( + context.controlFlow(barrier), + bmgr.not(context.execution(barrier)) + ); + } + + private BooleanFormula threadIsStuckInBarrier(Thread thread) { + final BooleanFormulaManager bmgr = context.getBooleanFormulaManager(); + return thread.getEvents(ControlBarrier.class).stream() + .map(this::barrierIsBlocking) + .reduce(bmgr.makeFalse(), bmgr::or); + } + + private int getWorkgroupId(Thread thread) { + ScopeHierarchy hierarchy = thread.getScopeHierarchy(); + if (hierarchy != null) { + int id = hierarchy.getScopeId(Tag.Vulkan.WORK_GROUP); + if (id < 0) { + id = hierarchy.getScopeId(Tag.PTX.CTA); + } + return id; + } + throw new IllegalArgumentException("Attempt to compute workgroup ID " + + "for a non-hierarchical thread"); + } + public BooleanFormula encodeControlFlow() { - logger.info("Encoding program control flow"); + logger.info("Encoding program control flow with progress model {}", context.getTask().getProgressModel()); - BooleanFormulaManager bmgr = context.getBooleanFormulaManager(); + final BooleanFormulaManager bmgr = context.getBooleanFormulaManager(); + final ForwardProgressEncoder progressEncoder = new ForwardProgressEncoder(); List enc = new ArrayList<>(); for(Thread t : context.getTask().getProgram().getThreads()){ - enc.add(encodeThreadCF(t)); + enc.add(encodeConsistentThreadCF(t)); + if (isInitThread(t)) { + // Init threads are always scheduled fairly + enc.add(progressEncoder.encodeFairForwardProgress(t)); + } } + enc.add(encodeForwardProgress(context.getTask().getProgram(), context.getTask().getProgressModel())); return bmgr.and(enc); } - private BooleanFormula encodeThreadCF(Thread thread) { + /* + A thread has consistent control flow if every event in the cf + (1) has a predecessor + OR (2) is the ThreadStart event and the thread is enabled + This does NOT encode any forward progress guarantees. + TODO: Refactor out the awkward .encodeExec calls + */ + private BooleanFormula encodeConsistentThreadCF(Thread thread) { final BooleanFormulaManager bmgr = context.getBooleanFormulaManager(); final ThreadStart startEvent = thread.getEntry(); final List enc = new ArrayList<>(); - final BooleanFormula cfStart = context.controlFlow(startEvent); - if (startEvent.getCreator() == null) { - enc.add(cfStart); - } else if (startEvent.mayFailSpuriously()) { - enc.add(bmgr.implication(cfStart, context.execution(startEvent.getCreator()))); - } else { - enc.add(bmgr.equivalence(cfStart, context.execution(startEvent.getCreator()))); - } + enc.add(bmgr.implication(threadHasStarted(thread), threadIsEnabled(thread))); enc.add(startEvent.encodeExec(context)); - Event pred = startEvent; - Event next = startEvent.getSuccessor(); - if (next != null) { - for(Event e : next.getSuccessors()) { - // Immediate control flow - BooleanFormula cfCond = context.controlFlow(pred); - if (pred instanceof CondJump jump) { - cfCond = bmgr.and(cfCond, bmgr.not(context.jumpCondition(jump))); - } else if (pred instanceof ControlBarrier) { - cfCond = bmgr.and(cfCond, context.execution(pred)); + for(final Event cur : startEvent.getSuccessor().getSuccessors()) { + final Event pred = cur.getPredecessor(); + // Immediate control flow + BooleanFormula cfCond = context.controlFlow(pred); + if (pred instanceof CondJump jump) { + cfCond = bmgr.and(cfCond, bmgr.not(context.jumpCondition(jump))); + } else if (pred instanceof ControlBarrier) { + cfCond = bmgr.and(cfCond, context.execution(pred)); + } + + if (cur instanceof Label label) { + for (CondJump jump : label.getJumpSet()) { + cfCond = bmgr.or(cfCond, bmgr.and(context.controlFlow(jump), context.jumpCondition(jump))); } + } + + // cf(cur) => exists pred: cf(pred) && "pred->cur" + enc.add(bmgr.implication(context.controlFlow(cur), cfCond)); + // encode execution semantics + enc.add(cur.encodeExec(context)); + // TODO: Maybe add "exec => cf" implications automatically. + // We probably never want events that can execute without being in the control-flow. + } + return bmgr.and(enc); + } - // Control flow via jumps - if (e instanceof Label label) { - for (CondJump jump : label.getJumpSet()) { - cfCond = bmgr.or(cfCond, bmgr.and(context.controlFlow(jump), context.jumpCondition(jump))); + private BooleanFormula encodeControlBarriers() { + BooleanFormulaManager bmgr = context.getBooleanFormulaManager(); + BooleanFormula enc = bmgr.makeTrue(); + Map> groups = context.getTask().getProgram().getThreads().stream() + .filter(Thread::hasScope) + .collect(groupingBy(this::getWorkgroupId, + flatMapping(t -> t.getEvents(ControlBarrier.class).stream(), toList()))); + + for (List events : groups.values()) { + for (ControlBarrier e1 : events) { + Expression id1 = e1.getId(); + BooleanFormula allCF = context.controlFlow(e1); + for (ControlBarrier e2 : events) { + if (!e1.getThread().equals(e2.getThread())) { + Expression id2 = e2.getId(); + BooleanFormula sameId = context.equal(context.encodeExpressionAt(id1, e1), context.encodeExpressionAt(id2, e2)); + BooleanFormula cf = bmgr.or(context.controlFlow(e2), bmgr.not(sameId)); + allCF = bmgr.and(allCF, cf); } } - enc.add(bmgr.equivalence(context.controlFlow(e), cfCond)); - enc.add(e.encodeExec(context)); - pred = e; + enc = bmgr.and(enc, bmgr.equivalence(allCF, context.execution(e1))); } } - return bmgr.and(enc); + return enc; } + private BooleanFormula encodeForwardProgress(Program program, ProgressModel progressModel) { + final ForwardProgressEncoder progressEncoder = new ForwardProgressEncoder(); + return switch (progressModel) { + case FAIR -> progressEncoder.encodeFairForwardProgress(program); + case HSA -> progressEncoder.encodeHSAForwardProgress(program); + case OBE -> progressEncoder.encodeOBEForwardProgress(program); + case UNFAIR -> progressEncoder.encodeUnfairForwardProgress(program); + }; + } + + // ===================================================================================== + // Encodes the address values of memory objects. public BooleanFormula encodeMemory() { logger.info("Encoding memory"); @@ -249,8 +352,7 @@ public BooleanFormula encodeDependencies() { final Formula value = context.encodeExpressionAt(r.getKey(), reader); final Dependency.State state = r.getValue(); List overwrite = new ArrayList<>(); - for(Event writer : reverse(state.may)) { - assert writer instanceof RegWriter; + for(RegWriter writer : reverse(state.may)) { BooleanFormula edge; if(state.must.contains(writer)) { if (exec.isImplied(reader, writer) && reader.cfImpliesExec()) { @@ -267,7 +369,7 @@ public BooleanFormula encodeDependencies() { edge = context.dependency(writer, reader); enc.add(bmgr.equivalence(edge, bmgr.and(context.execution(writer), context.controlFlow(reader), bmgr.not(bmgr.or(overwrite))))); } - enc.add(bmgr.implication(edge, context.equal(value, context.result((RegWriter) writer)))); + enc.add(bmgr.implication(edge, context.equal(value, context.result(writer)))); overwrite.add(context.execution(writer)); } if(initializeRegisters && !state.initialized) { @@ -324,16 +426,132 @@ public BooleanFormula encodeFinalRegisterValues() { return bmgr.and(enc); } - private int getWorkgroupId(Thread thread) { - ScopeHierarchy hierarchy = thread.getScopeHierarchy(); - if (hierarchy != null) { - int id = hierarchy.getScopeId(Tag.Vulkan.WORK_GROUP); - if (id < 0) { - id = hierarchy.getScopeId(Tag.PTX.CTA); + // ============================================ Forward progress ============================================ + + private class ForwardProgressEncoder { + + /* + Encodes fair forward progress for a single thread: the thread will eventually get scheduled (if it is enabled). + In particular, if the thread is enabled then it will eventually execute. + */ + private BooleanFormula encodeFairForwardProgress(Thread thread) { + final BooleanFormulaManager bmgr = context.getBooleanFormulaManager(); + final List enc = new ArrayList<>(); + + // An enabled thread eventually gets started/scheduled + enc.add(bmgr.implication(threadIsEnabled(thread), threadHasStarted(thread))); + + // For every event in the cf a successor will be in the cf (unless a barrier is blocking). + for (Event cur : thread.getEvents()) { + if (cur == thread.getExit()) { + break; + } + final List succs = new ArrayList<>(); + final BooleanFormula curCf = context.controlFlow(cur); + final BooleanFormula isNotBlocked = cur instanceof ControlBarrier ? context.execution(cur) : bmgr.makeTrue(); + + succs.add(cur.getSuccessor()); + if (cur instanceof CondJump jump) { + succs.add(jump.getLabel()); + } + enc.add(bmgr.implication(bmgr.and(curCf, isNotBlocked), bmgr.or(Lists.transform(succs, context::controlFlow)))); } - return id; + return bmgr.and(enc); } - throw new IllegalArgumentException("Attempt to compute workgroup ID " + - "for a non-hierarchical thread"); + + /* + Minimal progress means that at least one thread must get scheduled, i.e., the execution cannot just stop. + In particular, a single-threaded program must progress and concurrent programs with only finite threads + must terminate (unless blocked). + + NOTE: For producing correct verdicts on loop-based nontermination, we do not really require + minimal progress guarantees. + This may change in the presence of control barriers, depending on how they affect scheduling, + i.e., do blocked threads remain eligible for scheduling? + */ + private BooleanFormula encodeMinimalProgress(Program program) { + final BooleanFormulaManager bmgr = context.getBooleanFormulaManager(); + + BooleanFormula allThreadsTerminated = bmgr.makeTrue(); + BooleanFormula aThreadIsStuck = bmgr.makeFalse(); + for (Thread t : program.getThreads()) { + if (isInitThread(t)) { + continue; + } + allThreadsTerminated = bmgr.and(allThreadsTerminated, + bmgr.or(bmgr.not(threadIsEnabled(t)), threadHasTerminated(t)) + ); + // Here we assume that a thread stuck in a barrier is eligible for scheduling + // so we can (unfairly) schedule the blocked thread indefinitely + // TODO: We may revise this and disallow blocked threads from getting scheduled again. + aThreadIsStuck = bmgr.or(aThreadIsStuck, + bmgr.or(threadIsStuckInLoop(t), threadIsStuckInBarrier(t)) + ); + } + + return bmgr.or(allThreadsTerminated, aThreadIsStuck); + } + + // --------------------------------------------------------------------------- + + // FAIR: All threads have fair forward progress + private BooleanFormula encodeFairForwardProgress(Program program) { + final BooleanFormulaManager bmgr = context.getBooleanFormulaManager(); + final List enc = new ArrayList<>(); + for (Thread thread : program.getThreads()) { + if (!isInitThread(thread)) { + // We skip init threads because they get special treatment. + enc.add(encodeFairForwardProgress(thread)); + } + } + return bmgr.and(enc); + } + + // UNFAIR: No threads have fair forward progress + private BooleanFormula encodeUnfairForwardProgress(Program program) { + return encodeMinimalProgress(program); + } + + // OBE: All executing threads are scheduled fairly. + private BooleanFormula encodeOBEForwardProgress(Program program) { + final BooleanFormulaManager bmgr = context.getBooleanFormulaManager(); + final List enc = new ArrayList<>(); + for (Thread thread : program.getThreads()) { + if (isInitThread(thread)) { + continue; + } + final BooleanFormula wasScheduledOnce = threadHasStarted(thread); + final BooleanFormula fairProgress = encodeFairForwardProgress(thread); + enc.add(bmgr.implication(wasScheduledOnce, fairProgress)); + } + enc.add(encodeMinimalProgress(program)); + return bmgr.and(enc); + } + + // HSA: Lowest id thread is scheduled fairly. + private BooleanFormula encodeHSAForwardProgress(Program program) { + final List threads = new ArrayList<>(program.getThreads()); + threads.sort(Comparator.comparingInt(Thread::getId)); + final BooleanFormulaManager bmgr = context.getBooleanFormulaManager(); + + final List enc = new ArrayList<>(); + for (int i = 0; i < threads.size(); i++) { + final Thread thread = threads.get(i); + if (isInitThread(thread)) { + continue; + } + final List allLowerIdThreadsTerminated = new ArrayList<>(); + for (Thread t : threads.subList(0, i)) { + allLowerIdThreadsTerminated.add(bmgr.or(threadHasTerminated(t), bmgr.not(threadIsEnabled(t)))); + } + final BooleanFormula threadHasLowestIdAmongActiveThreads = bmgr.and(allLowerIdThreadsTerminated); + final BooleanFormula fairProgress = encodeFairForwardProgress(thread); + enc.add(bmgr.implication(threadHasLowestIdAmongActiveThreads, fairProgress)); + } + enc.add(encodeMinimalProgress(program)); + return bmgr.and(enc); + } + } } + diff --git a/dartagnan/src/main/java/com/dat3m/dartagnan/program/Thread.java b/dartagnan/src/main/java/com/dat3m/dartagnan/program/Thread.java index 620debc3cb..a4280b0b1b 100644 --- a/dartagnan/src/main/java/com/dat3m/dartagnan/program/Thread.java +++ b/dartagnan/src/main/java/com/dat3m/dartagnan/program/Thread.java @@ -75,7 +75,7 @@ public List getSpawningEvents() { Event cur = start; while (!(cur instanceof Load startLoad)) { cur = cur.getSuccessor(); } cur = start.getCreator(); - while (!(cur instanceof Store startStore)) { cur = cur.getSuccessor(); } + while (!(cur instanceof Store startStore)) { cur = cur.getPredecessor(); } assert startStore.getAddress().equals(startLoad.getAddress()); diff --git a/dartagnan/src/main/java/com/dat3m/dartagnan/program/analysis/BranchEquivalence.java b/dartagnan/src/main/java/com/dat3m/dartagnan/program/analysis/BranchEquivalence.java index 52fa863365..19019fcb64 100644 --- a/dartagnan/src/main/java/com/dat3m/dartagnan/program/analysis/BranchEquivalence.java +++ b/dartagnan/src/main/java/com/dat3m/dartagnan/program/analysis/BranchEquivalence.java @@ -31,6 +31,9 @@ TODO: (5) Transitively close the merged implication graph, and saturate the mutual exclusion relation using the rule A => B, B ~ C, C <= D ----> A ~ D (where ~ denotes mutual exclusion) + + NOTE: BranchEquivalence assumes a strong forward progress model when computing equivalence: + when an event is in the control-flow then so is one of its successors. */ public class BranchEquivalence extends AbstractEquivalence { diff --git a/dartagnan/src/main/java/com/dat3m/dartagnan/program/analysis/ExecutionAnalysis.java b/dartagnan/src/main/java/com/dat3m/dartagnan/program/analysis/ExecutionAnalysis.java index db0147f496..454d26c708 100644 --- a/dartagnan/src/main/java/com/dat3m/dartagnan/program/analysis/ExecutionAnalysis.java +++ b/dartagnan/src/main/java/com/dat3m/dartagnan/program/analysis/ExecutionAnalysis.java @@ -1,11 +1,15 @@ package com.dat3m.dartagnan.program.analysis; +import com.dat3m.dartagnan.configuration.ProgressModel; import com.dat3m.dartagnan.program.Program; +import com.dat3m.dartagnan.program.Thread; import com.dat3m.dartagnan.program.event.Event; import com.dat3m.dartagnan.verification.Context; import org.sosy_lab.common.configuration.Configuration; import org.sosy_lab.common.configuration.InvalidConfigurationException; +import java.util.Comparator; + public interface ExecutionAnalysis { boolean isImplied(Event start, Event implied); @@ -13,20 +17,63 @@ public interface ExecutionAnalysis { - static ExecutionAnalysis fromConfig(Program program, Context context, Configuration config) + static ExecutionAnalysis fromConfig(Program program, ProgressModel progressModel, Context context, Configuration config) throws InvalidConfigurationException { + final BranchEquivalence eq = context.requires(BranchEquivalence.class); + return new DefaultExecutionAnalysis(program, eq, progressModel); + } +} + +/* + NOTE: The BranchEquivalence computes cf-equivalence/implication assuming a strong progress model. + However, we can "weaken" the BranchEquivalence results after the fact based on the assumed progress model. + */ +class DefaultExecutionAnalysis implements ExecutionAnalysis { + + private final BranchEquivalence eq; + private final ProgressModel progressModel; + private final Thread lowestIdThread; // For HSA + + public DefaultExecutionAnalysis(Program program, BranchEquivalence eq, ProgressModel progressModel) { + this.eq = eq; + this.progressModel = progressModel; - BranchEquivalence eq = context.requires(BranchEquivalence.class); - return new ExecutionAnalysis() { - @Override - public boolean isImplied(Event start, Event implied) { - return start == implied || (implied.cfImpliesExec() && eq.isImplied(start, implied)); - } - - @Override - public boolean areMutuallyExclusive(Event a, Event b) { - return eq.areMutuallyExclusive(a, b); - } + this.lowestIdThread = program.getThreads().stream().min(Comparator.comparingInt(Thread::getId)).get(); + } + + private boolean isSameThread(Event a, Event b) { + return a.getThread() == b.getThread(); + } + + @Override + public boolean isImplied(Event start, Event implied) { + if (start == implied) { + return true; + } + final boolean weakestImplication = (implied.cfImpliesExec() && eq.isImplied(start, implied)); + if (!weakestImplication) { + // If weakest implication does not hold, the events are unrelated under all progress models. + return false; + } + final boolean strongestImplication = /* weakestImplication && */ + isSameThread(start, implied) && start.getGlobalId() > implied.getGlobalId(); + if (strongestImplication) { + // If strongest implication does hold, then all progress models will give this implication + return true; + } + // weakest implication holds but not strongest: progress model decides + final boolean implication = switch (progressModel) { + case FAIR -> weakestImplication; // TRUE + case HSA -> implied.getThread() == lowestIdThread; + case OBE -> isSameThread(start, implied); + case UNFAIR -> strongestImplication; // FALSE }; + return implication; + } + + @Override + public boolean areMutuallyExclusive(Event a, Event b) { + // The concept of mutual exclusion is identical under all progress models. + return eq.areMutuallyExclusive(a, b); } } diff --git a/dartagnan/src/main/java/com/dat3m/dartagnan/program/processing/ProcessingManager.java b/dartagnan/src/main/java/com/dat3m/dartagnan/program/processing/ProcessingManager.java index c3d986514f..19c24b528e 100644 --- a/dartagnan/src/main/java/com/dat3m/dartagnan/program/processing/ProcessingManager.java +++ b/dartagnan/src/main/java/com/dat3m/dartagnan/program/processing/ProcessingManager.java @@ -98,7 +98,7 @@ private ProcessingManager(Configuration config) throws InvalidConfigurationExcep Simplifier.fromConfig(config) ), Target.FUNCTIONS, true ), - ProgramProcessor.fromFunctionProcessor(NormalizeLoops.newInstance(), Target.FUNCTIONS, true), + ProgramProcessor.fromFunctionProcessor(NormalizeLoops.newInstance(), Target.ALL, true), RegisterDecomposition.newInstance(), RemoveDeadFunctions.newInstance(), printAfterSimplification ? DebugPrint.withHeader("After simplification", Printer.Mode.ALL) : null, diff --git a/dartagnan/src/main/java/com/dat3m/dartagnan/program/processing/ThreadCreation.java b/dartagnan/src/main/java/com/dat3m/dartagnan/program/processing/ThreadCreation.java index f26c939752..c1567f2e42 100644 --- a/dartagnan/src/main/java/com/dat3m/dartagnan/program/processing/ThreadCreation.java +++ b/dartagnan/src/main/java/com/dat3m/dartagnan/program/processing/ThreadCreation.java @@ -128,8 +128,8 @@ public void run(Program program) { comAddress.setInitialValue(0, expressions.makeZero(archType)); final List replacement = eventSequence( - createEvent, newReleaseStore(comAddress, expressions.makeTrue()), + createEvent, newStore(pidResultAddress, tidExpr), // TODO: Allow to return failure value (!= 0) newLocal(resultRegister, expressions.makeZero((IntegerType) resultRegister.getType())) diff --git a/dartagnan/src/main/java/com/dat3m/dartagnan/utils/options/BaseOptions.java b/dartagnan/src/main/java/com/dat3m/dartagnan/utils/options/BaseOptions.java index fd166a38e0..c121bd263d 100644 --- a/dartagnan/src/main/java/com/dat3m/dartagnan/utils/options/BaseOptions.java +++ b/dartagnan/src/main/java/com/dat3m/dartagnan/utils/options/BaseOptions.java @@ -1,78 +1,110 @@ package com.dat3m.dartagnan.utils.options; import com.dat3m.dartagnan.configuration.Method; +import com.dat3m.dartagnan.configuration.ProgressModel; import com.dat3m.dartagnan.configuration.Property; import com.dat3m.dartagnan.witness.WitnessType; - import org.sosy_lab.common.configuration.Option; import org.sosy_lab.common.configuration.Options; import org.sosy_lab.java_smt.SolverContextFactory.Solvers; -import static com.dat3m.dartagnan.configuration.OptionNames.*; - import java.util.EnumSet; +import static com.dat3m.dartagnan.configuration.OptionNames.*; + @Options public abstract class BaseOptions { @Option( - name=PROPERTY, - description="The property to check for: reachability (default), liveness, races.", - toUppercase=true) - private EnumSet property=Property.getDefault(); + name = PROPERTY, + description = "A combination of properties to check for: program_spec, liveness, cat_spec (defaults to all).", + toUppercase = true) + private EnumSet property = Property.getDefault(); - public EnumSet getProperty() { return property; } + public EnumSet getProperty() { + return property; + } @Option( - name=VALIDATE, - description="Performs violation witness validation. Argument is the path to the witness file.") + name = PROGRESSMODEL, + description = "The progress model to assume: fair (default), hsa, obe, unfair", + toUppercase = true) + private ProgressModel progressModel = ProgressModel.getDefault(); + + public ProgressModel getProgressModel() { + return progressModel; + } + + @Option( + name = VALIDATE, + description = "Performs violation witness validation. Argument is the path to the witness file.") private String witnessPath; - public boolean runValidator() { return witnessPath != null; } - public String getWitnessPath() { return witnessPath; } + public boolean runValidator() { + return witnessPath != null; + } + + public String getWitnessPath() { + return witnessPath; + } @Option( - name=METHOD, - description="Solver method to be used.", - toUppercase=true) - private Method method=Method.getDefault(); + name = METHOD, + description = "Solver method to be used.", + toUppercase = true) + private Method method = Method.getDefault(); - public Method getMethod() { return method; } + public Method getMethod() { + return method; + } @Option( - name=SOLVER, - description="Uses the specified SMT solver as a backend.", - toUppercase=true) - private Solvers solver=Solvers.Z3; + name = SOLVER, + description = "Uses the specified SMT solver as a backend.", + toUppercase = true) + private Solvers solver = Solvers.Z3; - public Solvers getSolver() { return solver; } + public Solvers getSolver() { + return solver; + } @Option( - name=TIMEOUT, - description="Timeout (in secs) before interrupting the SMT solver.") - private int timeout=0; + name = TIMEOUT, + description = "Timeout (in secs) before interrupting the SMT solver.") + private int timeout = 0; + + public boolean hasTimeout() { + return timeout > 0; + } - public boolean hasTimeout() { return timeout > 0; } - public int getTimeout() { return timeout; } + public int getTimeout() { + return timeout; + } @Option( - name=PHANTOM_REFERENCES, - description="Decrease references on Z3 formula objects once they are no longer referenced.") - private boolean phantomReferences=true; + name = PHANTOM_REFERENCES, + description = "Decrease references on Z3 formula objects once they are no longer referenced.") + private boolean phantomReferences = true; - public boolean usePhantomReferences() { return phantomReferences; } + public boolean usePhantomReferences() { + return phantomReferences; + } @Option( - name=WITNESS, - description="Type of the violation graph to generate in the output directory.") - private WitnessType witnessType=WitnessType.getDefault(); + name = WITNESS, + description = "Type of the violation graph to generate in the output directory.") + private WitnessType witnessType = WitnessType.getDefault(); - public WitnessType getWitnessType() { return witnessType; } + public WitnessType getWitnessType() { + return witnessType; + } @Option( - name=SMTLIB2, - description="Dump encoding to an SMTLIB2 file.") - private boolean smtlib=false; + name = SMTLIB2, + description = "Dump encoding to an SMTLIB2 file.") + private boolean smtlib = false; - public boolean getDumpSmtLib() { return smtlib; } + public boolean getDumpSmtLib() { + return smtlib; + } } \ No newline at end of file diff --git a/dartagnan/src/main/java/com/dat3m/dartagnan/verification/VerificationTask.java b/dartagnan/src/main/java/com/dat3m/dartagnan/verification/VerificationTask.java index fe15c2c668..f4556354fd 100644 --- a/dartagnan/src/main/java/com/dat3m/dartagnan/verification/VerificationTask.java +++ b/dartagnan/src/main/java/com/dat3m/dartagnan/verification/VerificationTask.java @@ -1,6 +1,7 @@ package com.dat3m.dartagnan.verification; import com.dat3m.dartagnan.configuration.Arch; +import com.dat3m.dartagnan.configuration.ProgressModel; import com.dat3m.dartagnan.configuration.Property; import com.dat3m.dartagnan.program.Program; import com.dat3m.dartagnan.witness.graphml.WitnessGraph; @@ -23,14 +24,17 @@ public class VerificationTask { // Data objects private final Program program; private final Wmm memoryModel; + private final ProgressModel progressModel; private final EnumSet property; private final WitnessGraph witness; private final Configuration config; - protected VerificationTask(Program program, Wmm memoryModel, EnumSet property, WitnessGraph witness, Configuration config) + protected VerificationTask(Program program, Wmm memoryModel, ProgressModel progressModel, + EnumSet property, WitnessGraph witness, Configuration config) throws InvalidConfigurationException { this.program = checkNotNull(program); this.memoryModel = checkNotNull(memoryModel); + this.progressModel = checkNotNull(progressModel); this.property = checkNotNull(property); this.witness = checkNotNull(witness); this.config = checkNotNull(config); @@ -42,6 +46,7 @@ public static VerificationTaskBuilder builder() { public Program getProgram() { return program; } public Wmm getMemoryModel() { return memoryModel; } + public ProgressModel getProgressModel() { return progressModel; } public Configuration getConfig() { return this.config; } public WitnessGraph getWitness() { return witness; } public EnumSet getProperty() { return property; } @@ -52,6 +57,7 @@ public static VerificationTaskBuilder builder() { public static class VerificationTaskBuilder { protected WitnessGraph witness = new WitnessGraph(); protected ConfigurationBuilder config = Configuration.builder(); + protected ProgressModel progressModel = ProgressModel.getDefault(); protected VerificationTaskBuilder() { } @@ -72,6 +78,11 @@ public VerificationTaskBuilder withBound(int k) { return this; } + public VerificationTaskBuilder withProgressModel(ProgressModel progressModel) { + this.progressModel = progressModel; + return this; + } + public VerificationTaskBuilder withSolverTimeout(int t) { this.config.setOption(TIMEOUT, Integer.toString(t)); return this; @@ -83,7 +94,7 @@ public VerificationTaskBuilder withConfig(Configuration config) { } public VerificationTask build(Program program, Wmm memoryModel, EnumSet property) throws InvalidConfigurationException { - return new VerificationTask(program, memoryModel, property, witness, config.build()); + return new VerificationTask(program, memoryModel, progressModel, property, witness, config.build()); } } } \ No newline at end of file diff --git a/dartagnan/src/main/java/com/dat3m/dartagnan/verification/solving/ModelChecker.java b/dartagnan/src/main/java/com/dat3m/dartagnan/verification/solving/ModelChecker.java index cac688c576..1452385911 100644 --- a/dartagnan/src/main/java/com/dat3m/dartagnan/verification/solving/ModelChecker.java +++ b/dartagnan/src/main/java/com/dat3m/dartagnan/verification/solving/ModelChecker.java @@ -82,7 +82,7 @@ public static void preprocessMemoryModel(VerificationTask task, Configuration co public static void performStaticProgramAnalyses(VerificationTask task, Context analysisContext, Configuration config) throws InvalidConfigurationException { Program program = task.getProgram(); analysisContext.register(BranchEquivalence.class, BranchEquivalence.fromConfig(program, config)); - analysisContext.register(ExecutionAnalysis.class, ExecutionAnalysis.fromConfig(program, analysisContext, config)); + analysisContext.register(ExecutionAnalysis.class, ExecutionAnalysis.fromConfig(program, task.getProgressModel(), analysisContext, config)); analysisContext.register(Dependency.class, Dependency.fromConfig(program, analysisContext, config)); analysisContext.register(AliasAnalysis.class, AliasAnalysis.fromConfig(program, analysisContext, config)); analysisContext.register(ThreadSymmetry.class, ThreadSymmetry.fromConfig(program, config)); diff --git a/dartagnan/src/main/java/com/dat3m/dartagnan/verification/solving/RefinementSolver.java b/dartagnan/src/main/java/com/dat3m/dartagnan/verification/solving/RefinementSolver.java index bce614c3ba..f1b70d4c45 100644 --- a/dartagnan/src/main/java/com/dat3m/dartagnan/verification/solving/RefinementSolver.java +++ b/dartagnan/src/main/java/com/dat3m/dartagnan/verification/solving/RefinementSolver.java @@ -205,6 +205,7 @@ private void runInternal(SolverContext ctx, ProverWithTracker prover, Verificati final VerificationTask baselineTask = VerificationTask.builder() .withConfig(task.getConfig()) + .withProgressModel(task.getProgressModel()) .build(program, baselineModel, task.getProperty()); performStaticWmmAnalyses(baselineTask, baselineContext, config); diff --git a/dartagnan/src/test/java/com/dat3m/dartagnan/c/AbstractCTest.java b/dartagnan/src/test/java/com/dat3m/dartagnan/c/AbstractCTest.java index 39d4ef879d..6279a4c64a 100644 --- a/dartagnan/src/test/java/com/dat3m/dartagnan/c/AbstractCTest.java +++ b/dartagnan/src/test/java/com/dat3m/dartagnan/c/AbstractCTest.java @@ -2,6 +2,7 @@ import com.dat3m.dartagnan.configuration.Arch; import com.dat3m.dartagnan.configuration.OptionNames; +import com.dat3m.dartagnan.configuration.ProgressModel; import com.dat3m.dartagnan.configuration.Property; import com.dat3m.dartagnan.encoding.ProverWithTracker; import com.dat3m.dartagnan.program.Program; @@ -70,6 +71,10 @@ protected Provider getConfigurationProvider() { return Provider.fromSupplier(this::getConfiguration); } + protected Provider getProgressModelProvider() { + return () -> ProgressModel.FAIR; + } + // ============================================================= // Provider rules @@ -79,10 +84,11 @@ protected Provider getConfigurationProvider() { protected final Provider boundProvider = getBoundProvider(); protected final Provider programProvider = Providers.createProgramFromPath(filePathProvider); protected final Provider wmmProvider = getWmmProvider(); + protected final Provider progressModelProvider = getProgressModelProvider(); protected final Provider solverProvider = getSolverProvider(); protected final Provider> propertyProvider = getPropertyProvider(); protected final Provider configurationProvider = getConfigurationProvider(); - protected final Provider taskProvider = Providers.createTask(programProvider, wmmProvider, propertyProvider, targetProvider, boundProvider, configurationProvider); + protected final Provider taskProvider = Providers.createTask(programProvider, wmmProvider, propertyProvider, targetProvider, progressModelProvider, boundProvider, configurationProvider); protected final Provider contextProvider = Providers.createSolverContextFromManager(shutdownManagerProvider, solverProvider); protected final Provider proverProvider = Providers.createProverWithFixedOptions(contextProvider, SolverContext.ProverOptions.GENERATE_MODELS); @@ -99,6 +105,7 @@ protected Provider getConfigurationProvider() { .around(boundProvider) .around(programProvider) .around(wmmProvider) + .around(progressModelProvider) .around(solverProvider) .around(propertyProvider) .around(taskProvider) diff --git a/dartagnan/src/test/java/com/dat3m/dartagnan/c/CProgressTest.java b/dartagnan/src/test/java/com/dat3m/dartagnan/c/CProgressTest.java new file mode 100644 index 0000000000..4744418956 --- /dev/null +++ b/dartagnan/src/test/java/com/dat3m/dartagnan/c/CProgressTest.java @@ -0,0 +1,102 @@ +package com.dat3m.dartagnan.c; + +import com.dat3m.dartagnan.configuration.ProgressModel; +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.verification.solving.AssumeSolver; +import com.dat3m.dartagnan.verification.solving.RefinementSolver; +import com.dat3m.dartagnan.wmm.Wmm; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.junit.runners.Parameterized; + +import java.io.IOException; +import java.util.Arrays; +import java.util.EnumSet; + +import static com.dat3m.dartagnan.configuration.Arch.C11; +import static com.dat3m.dartagnan.configuration.ProgressModel.*; +import static com.dat3m.dartagnan.utils.ResourceHelper.getTestResourcePath; +import static com.dat3m.dartagnan.utils.Result.FAIL; +import static com.dat3m.dartagnan.utils.Result.PASS; +import static org.junit.Assert.assertEquals; + +@RunWith(Parameterized.class) +public class CProgressTest extends AbstractCTest { + + protected ProgressModel progressModel; + + public CProgressTest(String name, ProgressModel progressModel, Result expected) { + super(name, C11, expected); + this.progressModel = progressModel; + } + + @Override + protected Provider getProgramPathProvider() { + return () -> getTestResourcePath("progress/" + name + ".ll"); + } + + @Override + protected Provider getProgressModelProvider() { + return () -> progressModel; + } + + @Override + protected Provider getWmmProvider() { + return Providers.createWmmFromName(() -> "imm"); + } + + @Override + protected Provider> getPropertyProvider() { + return () -> EnumSet.of(Property.LIVENESS); + } + + @Override + protected long getTimeout() { + return 10000; + } + + @Parameterized.Parameters(name = "{index}: {0}, progress={1}") + public static Iterable data() throws IOException { + return Arrays.asList(new Object[][]{ + {"progressFair", FAIR, PASS}, + {"progressFair", HSA, FAIL}, + {"progressFair", OBE, FAIL}, + {"progressFair", UNFAIR, FAIL}, + // --------------------------- + {"progressHSA", FAIR, PASS}, + {"progressHSA", HSA, PASS}, + {"progressHSA", OBE, FAIL}, + {"progressHSA", UNFAIR, FAIL}, + // --------------------------- + {"progressOBE", FAIR, PASS}, + {"progressOBE", HSA, FAIL}, + {"progressOBE", OBE, PASS}, + {"progressOBE", UNFAIR, FAIL}, + // --------------------------- + {"progressOBE-HSA", FAIR, PASS}, + {"progressOBE-HSA", HSA, PASS}, + {"progressOBE-HSA", OBE, PASS}, + {"progressOBE-HSA", UNFAIR, FAIL}, + // --------------------------- + {"progressUnfair", FAIR, PASS}, + {"progressUnfair", HSA, PASS}, + {"progressUnfair", OBE, PASS}, + {"progressUnfair", UNFAIR, PASS}, + }); + } + + @Test + public void testAssume() throws Exception { + AssumeSolver s = AssumeSolver.run(contextProvider.get(), proverProvider.get(), taskProvider.get()); + assertEquals(expected, s.getResult()); + } + + @Test + public void testRefinement() throws Exception { + RefinementSolver s = RefinementSolver.run(contextProvider.get(), proverProvider.get(), taskProvider.get()); + assertEquals(expected, s.getResult()); + } +} \ No newline at end of file diff --git a/dartagnan/src/test/java/com/dat3m/dartagnan/compilation/AbstractCompilationTest.java b/dartagnan/src/test/java/com/dat3m/dartagnan/compilation/AbstractCompilationTest.java index f0d6f31d2a..d895eba4d5 100644 --- a/dartagnan/src/test/java/com/dat3m/dartagnan/compilation/AbstractCompilationTest.java +++ b/dartagnan/src/test/java/com/dat3m/dartagnan/compilation/AbstractCompilationTest.java @@ -1,6 +1,7 @@ package com.dat3m.dartagnan.compilation; import com.dat3m.dartagnan.configuration.Arch; +import com.dat3m.dartagnan.configuration.ProgressModel; import com.dat3m.dartagnan.configuration.Property; import com.dat3m.dartagnan.encoding.ProverWithTracker; import com.dat3m.dartagnan.program.Program; @@ -95,8 +96,8 @@ protected Provider getConfigurationProvider() { protected final Provider wmm2Provider = getTargetWmmProvider(); protected final Provider> propertyProvider = getPropertyProvider(); protected final Provider configProvider = getConfigurationProvider(); - protected final Provider task1Provider = Providers.createTask(program1Provider, wmm1Provider, propertyProvider, sourceProvider, () -> 1, configProvider); - protected final Provider task2Provider = Providers.createTask(program2Provider, wmm2Provider, propertyProvider, targetProvider, () -> 1, configProvider); + protected final Provider task1Provider = Providers.createTask(program1Provider, wmm1Provider, propertyProvider, sourceProvider, () -> ProgressModel.FAIR, () -> 1, configProvider); + protected final Provider task2Provider = Providers.createTask(program2Provider, wmm2Provider, propertyProvider, targetProvider, () -> ProgressModel.FAIR, () -> 1, configProvider); protected final Provider context1Provider = Providers.createSolverContextFromManager(shutdownManagerProvider, () -> Solvers.Z3); protected final Provider context2Provider = Providers.createSolverContextFromManager(shutdownManagerProvider, () -> Solvers.Z3); protected final Provider prover1Provider = Providers.createProverWithFixedOptions(context1Provider, ProverOptions.GENERATE_MODELS); diff --git a/dartagnan/src/test/java/com/dat3m/dartagnan/litmus/AbstractLitmusTest.java b/dartagnan/src/test/java/com/dat3m/dartagnan/litmus/AbstractLitmusTest.java index 3316d114eb..78ff645797 100644 --- a/dartagnan/src/test/java/com/dat3m/dartagnan/litmus/AbstractLitmusTest.java +++ b/dartagnan/src/test/java/com/dat3m/dartagnan/litmus/AbstractLitmusTest.java @@ -1,6 +1,7 @@ package com.dat3m.dartagnan.litmus; import com.dat3m.dartagnan.configuration.Arch; +import com.dat3m.dartagnan.configuration.ProgressModel; import com.dat3m.dartagnan.configuration.Property; import com.dat3m.dartagnan.encoding.ProverWithTracker; import com.dat3m.dartagnan.program.Program; @@ -10,8 +11,8 @@ import com.dat3m.dartagnan.utils.rules.Providers; import com.dat3m.dartagnan.utils.rules.RequestShutdownOnError; import com.dat3m.dartagnan.verification.VerificationTask; -import com.dat3m.dartagnan.verification.solving.RefinementSolver; import com.dat3m.dartagnan.verification.solving.AssumeSolver; +import com.dat3m.dartagnan.verification.solving.RefinementSolver; import com.dat3m.dartagnan.wmm.Wmm; import org.junit.Rule; import org.junit.Test; @@ -27,7 +28,10 @@ import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; -import java.util.*; +import java.util.ArrayList; +import java.util.EnumSet; +import java.util.Map; +import java.util.Set; import java.util.stream.Stream; import static com.dat3m.dartagnan.configuration.OptionNames.INITIALIZE_REGISTERS; @@ -88,6 +92,10 @@ protected Provider getConfigurationProvider() { .build()); } + protected Provider getProgressModelProvider() { + return () -> ProgressModel.FAIR; + } + protected Provider getBoundProvider() { return Provider.fromSupplier(() -> 1); } @@ -105,10 +113,11 @@ protected long getTimeout() { protected final Provider boundProvider = getBoundProvider(); protected final Provider programProvider = Providers.createProgramFromPath(filePathProvider); protected final Provider wmmProvider = getWmmProvider(); + protected final Provider progressModelProvider = getProgressModelProvider(); protected final Provider> propertyProvider = getPropertyProvider(); protected final Provider expectedResultProvider = Provider.fromSupplier(() -> expectedResults.get(filePathProvider.get().substring(filePathProvider.get().indexOf("/") + 1))); protected final Provider configProvider = getConfigurationProvider(); - protected final Provider taskProvider = Providers.createTask(programProvider, wmmProvider, propertyProvider, targetProvider, boundProvider, configProvider); + protected final Provider taskProvider = Providers.createTask(programProvider, wmmProvider, propertyProvider, targetProvider, progressModelProvider, boundProvider, configProvider); protected final Provider contextProvider = Providers.createSolverContextFromManager(shutdownManagerProvider, () -> Solvers.Z3); protected final Provider proverProvider = Providers.createProverWithFixedOptions(contextProvider, ProverOptions.GENERATE_MODELS); protected final Provider prover2Provider = Providers.createProverWithFixedOptions(contextProvider, ProverOptions.GENERATE_MODELS); @@ -124,6 +133,7 @@ protected long getTimeout() { .around(boundProvider) .around(programProvider) .around(wmmProvider) + .around(progressModelProvider) .around(propertyProvider) .around(configProvider) .around(taskProvider) diff --git a/dartagnan/src/test/java/com/dat3m/dartagnan/litmus/LitmusVulkanLivenessTest.java b/dartagnan/src/test/java/com/dat3m/dartagnan/litmus/LitmusVulkanFairLivenessTest.java similarity index 85% rename from dartagnan/src/test/java/com/dat3m/dartagnan/litmus/LitmusVulkanLivenessTest.java rename to dartagnan/src/test/java/com/dat3m/dartagnan/litmus/LitmusVulkanFairLivenessTest.java index 6047729de1..c59f004528 100644 --- a/dartagnan/src/test/java/com/dat3m/dartagnan/litmus/LitmusVulkanLivenessTest.java +++ b/dartagnan/src/test/java/com/dat3m/dartagnan/litmus/LitmusVulkanFairLivenessTest.java @@ -11,15 +11,15 @@ import java.util.EnumSet; @RunWith(Parameterized.class) -public class LitmusVulkanLivenessTest extends AbstractLitmusTest { +public class LitmusVulkanFairLivenessTest extends AbstractLitmusTest { - public LitmusVulkanLivenessTest(String path, Result expected) { + public LitmusVulkanFairLivenessTest(String path, Result expected) { super(path, expected); } @Parameterized.Parameters(name = "{index}: {0}, {1}") public static Iterable data() throws IOException { - return buildLitmusTests("litmus/VULKAN/", "VULKAN-Liveness"); + return buildLitmusTests("litmus/VULKAN/", "VULKAN-Liveness-Fair"); } @Override diff --git a/dartagnan/src/test/java/com/dat3m/dartagnan/litmus/LitmusVulkanHsaLivenessTest.java b/dartagnan/src/test/java/com/dat3m/dartagnan/litmus/LitmusVulkanHsaLivenessTest.java new file mode 100644 index 0000000000..62a759226b --- /dev/null +++ b/dartagnan/src/test/java/com/dat3m/dartagnan/litmus/LitmusVulkanHsaLivenessTest.java @@ -0,0 +1,40 @@ +package com.dat3m.dartagnan.litmus; + +import com.dat3m.dartagnan.configuration.Arch; +import com.dat3m.dartagnan.configuration.ProgressModel; +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 LitmusVulkanHsaLivenessTest extends AbstractLitmusTest { + + public LitmusVulkanHsaLivenessTest(String path, Result expected) { + super(path, expected); + } + + @Parameterized.Parameters(name = "{index}: {0}, {1}") + public static Iterable data() throws IOException { + return buildLitmusTests("litmus/VULKAN/", "VULKAN-Liveness-HSA"); + } + + @Override + protected Provider getProgressModelProvider() { + return () -> ProgressModel.HSA; + } + + @Override + protected Provider getTargetProvider() { + return () -> Arch.VULKAN; + } + + @Override + protected Provider> getPropertyProvider() { + return Provider.fromSupplier(() -> EnumSet.of(Property.LIVENESS)); + } +} diff --git a/dartagnan/src/test/java/com/dat3m/dartagnan/litmus/LitmusVulkanObeLivenessTest.java b/dartagnan/src/test/java/com/dat3m/dartagnan/litmus/LitmusVulkanObeLivenessTest.java new file mode 100644 index 0000000000..b921ae86f1 --- /dev/null +++ b/dartagnan/src/test/java/com/dat3m/dartagnan/litmus/LitmusVulkanObeLivenessTest.java @@ -0,0 +1,40 @@ +package com.dat3m.dartagnan.litmus; + +import com.dat3m.dartagnan.configuration.Arch; +import com.dat3m.dartagnan.configuration.ProgressModel; +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 LitmusVulkanObeLivenessTest extends AbstractLitmusTest { + + public LitmusVulkanObeLivenessTest(String path, Result expected) { + super(path, expected); + } + + @Parameterized.Parameters(name = "{index}: {0}, {1}") + public static Iterable data() throws IOException { + return buildLitmusTests("litmus/VULKAN/", "VULKAN-Liveness-OBE"); + } + + @Override + protected Provider getProgressModelProvider() { + return () -> ProgressModel.OBE; + } + + @Override + protected Provider getTargetProvider() { + return () -> Arch.VULKAN; + } + + @Override + protected Provider> getPropertyProvider() { + return Provider.fromSupplier(() -> EnumSet.of(Property.LIVENESS)); + } +} diff --git a/dartagnan/src/test/java/com/dat3m/dartagnan/miscellaneous/AnalysisTest.java b/dartagnan/src/test/java/com/dat3m/dartagnan/miscellaneous/AnalysisTest.java index b82e03031b..6c83163eae 100644 --- a/dartagnan/src/test/java/com/dat3m/dartagnan/miscellaneous/AnalysisTest.java +++ b/dartagnan/src/test/java/com/dat3m/dartagnan/miscellaneous/AnalysisTest.java @@ -1,6 +1,7 @@ package com.dat3m.dartagnan.miscellaneous; import com.dat3m.dartagnan.configuration.Alias; +import com.dat3m.dartagnan.configuration.ProgressModel; import com.dat3m.dartagnan.expression.Expression; import com.dat3m.dartagnan.expression.ExpressionFactory; import com.dat3m.dartagnan.expression.type.IntegerType; @@ -78,7 +79,7 @@ public void dependencyMustOverride() throws InvalidConfigurationException { Configuration config = Configuration.defaultConfiguration(); Context context = Context.create(); context.register(BranchEquivalence.class, BranchEquivalence.fromConfig(program, config)); - context.register(ExecutionAnalysis.class, ExecutionAnalysis.fromConfig(program, context, config)); + context.register(ExecutionAnalysis.class, ExecutionAnalysis.fromConfig(program, ProgressModel.FAIR, context, config)); Dependency dep = Dependency.fromConfig(program, context, config); Event me0 = findMatchingEventAfterProcessing(program, e0); Event me1 = findMatchingEventAfterProcessing(program, e1); @@ -512,7 +513,7 @@ private AliasAnalysis analyze(Program program, Alias method) throws InvalidConfi ProcessingManager.fromConfig(configuration).run(program); Context analysisContext = Context.create(); analysisContext.register(BranchEquivalence.class, BranchEquivalence.fromConfig(program, configuration)); - analysisContext.register(ExecutionAnalysis.class, ExecutionAnalysis.fromConfig(program, analysisContext, configuration)); + analysisContext.register(ExecutionAnalysis.class, ExecutionAnalysis.fromConfig(program, ProgressModel.FAIR, analysisContext, configuration)); analysisContext.register(Dependency.class, Dependency.fromConfig(program, analysisContext, configuration)); return AliasAnalysis.fromConfig(program, analysisContext, configuration); } diff --git a/dartagnan/src/test/java/com/dat3m/dartagnan/utils/rules/Providers.java b/dartagnan/src/test/java/com/dat3m/dartagnan/utils/rules/Providers.java index f31db39a13..419ef92690 100644 --- a/dartagnan/src/test/java/com/dat3m/dartagnan/utils/rules/Providers.java +++ b/dartagnan/src/test/java/com/dat3m/dartagnan/utils/rules/Providers.java @@ -1,15 +1,15 @@ package com.dat3m.dartagnan.utils.rules; +import com.dat3m.dartagnan.configuration.Arch; +import com.dat3m.dartagnan.configuration.ProgressModel; +import com.dat3m.dartagnan.configuration.Property; +import com.dat3m.dartagnan.encoding.ProverWithTracker; import com.dat3m.dartagnan.parsers.cat.ParserCat; import com.dat3m.dartagnan.parsers.program.ProgramParser; import com.dat3m.dartagnan.program.Program; import com.dat3m.dartagnan.utils.TestHelper; import com.dat3m.dartagnan.verification.VerificationTask; import com.dat3m.dartagnan.wmm.Wmm; -import com.dat3m.dartagnan.configuration.Arch; -import com.dat3m.dartagnan.configuration.Property; -import com.dat3m.dartagnan.encoding.ProverWithTracker; - import org.sosy_lab.common.ShutdownManager; import org.sosy_lab.common.ShutdownNotifier; import org.sosy_lab.common.configuration.Configuration; @@ -63,11 +63,12 @@ public static Provider createProgramFromFile(Supplier fileSupplie // =========================== Task related providers ============================== public static Provider createTask(Supplier programSupplier, Supplier wmmSupplier, Supplier> propertySupplier, - Supplier targetSupplier, Supplier boundSupplier, Supplier config) { + Supplier targetSupplier, Supplier progressModelSupplier, Supplier boundSupplier, Supplier config) { return Provider.fromSupplier(() -> VerificationTask.builder(). withConfig(config.get()). withTarget(targetSupplier.get()). withBound(boundSupplier.get()). + withProgressModel(progressModelSupplier.get()). build(programSupplier.get(), wmmSupplier.get(), propertySupplier.get())); } diff --git a/dartagnan/src/test/resources/VULKAN-Liveness-Fair-expected.csv b/dartagnan/src/test/resources/VULKAN-Liveness-Fair-expected.csv new file mode 100644 index 0000000000..7e60f1a13c --- /dev/null +++ b/dartagnan/src/test/resources/VULKAN-Liveness-Fair-expected.csv @@ -0,0 +1,483 @@ +litmus/VULKAN/CADP/2_threads_2_instructions/0_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_2_instructions/1_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_2_instructions/2_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_2_instructions/3_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_2_instructions/4_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_2_instructions/5_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_2_instructions/6_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_2_instructions/7_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/0_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/1_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/2_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/3_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/4_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/5_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/6_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/7_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/8_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/9_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/10_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/11_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/12_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/13_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/14_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/15_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/16_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/17_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/18_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/19_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/20_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/21_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/22_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/23_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/24_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/25_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/26_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/27_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/28_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/29_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/30_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/31_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/32_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/33_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/34_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/35_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/36_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/37_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/38_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/39_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/40_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/41_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/42_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/43_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/44_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/45_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/46_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/47_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/48_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/49_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/50_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/51_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/52_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/53_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/54_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/55_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/56_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/57_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/58_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/59_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/60_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/61_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/62_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/63_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/64_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/65_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/66_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/67_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/68_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/69_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/70_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/71_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/72_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/73_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/74_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/75_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/76_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/77_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/78_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/79_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/80_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/81_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/82_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/83_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/84_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/85_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/86_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/87_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/88_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/89_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/90_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/91_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/92_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/93_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/94_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/95_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/96_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/97_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/98_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/99_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/100_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/101_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/102_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/103_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/104_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/105_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/106_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/107_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/108_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/109_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/110_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/111_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/112_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/113_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/114_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/115_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/116_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/117_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/118_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/119_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/120_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/121_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/122_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/123_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/124_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/125_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/126_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/127_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/128_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/129_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/130_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/131_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/132_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/133_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/134_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/135_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/136_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/137_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/138_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/139_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/140_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/141_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/142_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/143_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/144_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/145_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/146_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/147_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/148_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/149_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/150_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/151_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/152_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/153_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/154_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/155_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/156_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/157_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/158_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/159_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/160_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/161_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/162_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/163_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/164_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/165_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/166_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/167_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/168_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/169_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/170_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/171_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/172_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/173_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/174_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/175_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_4_instructions/0_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_4_instructions/1_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_4_instructions/2_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_4_instructions/3_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_4_instructions/4_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_4_instructions/5_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_4_instructions/6_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_4_instructions/7_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_4_instructions/8_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_4_instructions/9_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_4_instructions/10_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_4_instructions/11_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_4_instructions/12_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_4_instructions/13_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_4_instructions/14_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_4_instructions/15_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_4_instructions/16_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_4_instructions/17_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_4_instructions/18_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_4_instructions/19_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_4_instructions/20_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_4_instructions/21_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_4_instructions/22_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_4_instructions/23_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_4_instructions/24_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_4_instructions/25_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_4_instructions/26_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_4_instructions/27_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_4_instructions/28_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_4_instructions/29_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_4_instructions/30_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_4_instructions/31_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_4_instructions/32_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_4_instructions/33_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_4_instructions/34_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_4_instructions/35_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_4_instructions/36_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_4_instructions/37_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_4_instructions/38_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_4_instructions/39_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_4_instructions/40_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_4_instructions/41_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_4_instructions/42_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_4_instructions/43_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_4_instructions/44_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_4_instructions/45_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_4_instructions/46_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_4_instructions/47_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_4_instructions/48_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_4_instructions/49_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_4_instructions/50_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_4_instructions/51_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_4_instructions/52_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_4_instructions/53_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_4_instructions/54_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_4_instructions/55_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_4_instructions/56_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_4_instructions/57_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_4_instructions/58_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_4_instructions/59_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_4_instructions/60_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_4_instructions/61_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_4_instructions/62_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_4_instructions/63_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_4_instructions/64_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_4_instructions/65_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_4_instructions/66_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_4_instructions/67_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_4_instructions/68_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_4_instructions/69_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_4_instructions/70_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_4_instructions/71_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_4_instructions/72_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_4_instructions/73_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_4_instructions/74_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_4_instructions/75_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_4_instructions/76_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_4_instructions/77_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_4_instructions/78_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_4_instructions/79_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_4_instructions/80_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_4_instructions/81_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_4_instructions/82_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_4_instructions/83_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_4_instructions/84_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_4_instructions/85_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_4_instructions/86_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_4_instructions/87_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_4_instructions/88_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_4_instructions/89_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_4_instructions/90_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_4_instructions/91_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_4_instructions/92_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_4_instructions/93_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_4_instructions/94_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_4_instructions/95_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_4_instructions/96_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_4_instructions/97_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_4_instructions/98_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_4_instructions/99_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_4_instructions/100_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_4_instructions/101_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_4_instructions/102_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_4_instructions/103_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_4_instructions/104_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_4_instructions/105_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_4_instructions/106_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_4_instructions/107_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_4_instructions/108_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_4_instructions/109_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_4_instructions/110_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_4_instructions/111_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_4_instructions/112_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_4_instructions/113_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_4_instructions/114_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_4_instructions/115_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_4_instructions/116_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_4_instructions/117_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_4_instructions/118_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_4_instructions/119_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_4_instructions/120_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_4_instructions/121_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_4_instructions/122_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_4_instructions/123_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_4_instructions/124_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_4_instructions/125_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_4_instructions/126_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_4_instructions/127_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_4_instructions/128_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_4_instructions/129_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_4_instructions/130_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_4_instructions/131_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_4_instructions/132_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_4_instructions/133_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_4_instructions/134_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_4_instructions/135_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_4_instructions/136_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_4_instructions/137_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_4_instructions/138_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_4_instructions/139_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_4_instructions/140_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_4_instructions/141_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_4_instructions/142_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_4_instructions/143_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_4_instructions/144_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_4_instructions/145_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_4_instructions/146_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_4_instructions/147_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_4_instructions/148_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_4_instructions/149_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_4_instructions/150_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_4_instructions/151_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_4_instructions/152_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_4_instructions/153_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_4_instructions/154_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_4_instructions/155_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_4_instructions/156_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_4_instructions/157_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_4_instructions/158_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_4_instructions/159_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_4_instructions/160_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_4_instructions/161_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_4_instructions/162_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_4_instructions/163_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_4_instructions/164_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_4_instructions/165_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_4_instructions/166_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_4_instructions/167_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_4_instructions/168_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_4_instructions/169_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_4_instructions/170_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_4_instructions/171_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_4_instructions/172_simple.litmus,1 +litmus/VULKAN/CADP/3_threads_3_instructions/0_simple.litmus,1 +litmus/VULKAN/CADP/3_threads_3_instructions/1_simple.litmus,1 +litmus/VULKAN/CADP/3_threads_3_instructions/2_simple.litmus,1 +litmus/VULKAN/CADP/3_threads_3_instructions/3_simple.litmus,1 +litmus/VULKAN/CADP/3_threads_3_instructions/4_simple.litmus,1 +litmus/VULKAN/CADP/3_threads_3_instructions/5_simple.litmus,1 +litmus/VULKAN/CADP/3_threads_3_instructions/6_simple.litmus,1 +litmus/VULKAN/CADP/3_threads_3_instructions/7_simple.litmus,1 +litmus/VULKAN/CADP/3_threads_3_instructions/8_simple.litmus,1 +litmus/VULKAN/CADP/3_threads_3_instructions/9_simple.litmus,1 +litmus/VULKAN/CADP/3_threads_3_instructions/10_simple.litmus,1 +litmus/VULKAN/CADP/3_threads_3_instructions/11_simple.litmus,1 +litmus/VULKAN/CADP/3_threads_3_instructions/12_simple.litmus,1 +litmus/VULKAN/CADP/3_threads_3_instructions/13_simple.litmus,1 +litmus/VULKAN/CADP/3_threads_3_instructions/14_simple.litmus,1 +litmus/VULKAN/CADP/3_threads_3_instructions/15_simple.litmus,1 +litmus/VULKAN/CADP/3_threads_3_instructions/16_simple.litmus,1 +litmus/VULKAN/CADP/3_threads_3_instructions/17_simple.litmus,1 +litmus/VULKAN/CADP/3_threads_3_instructions/18_simple.litmus,1 +litmus/VULKAN/CADP/3_threads_3_instructions/19_simple.litmus,1 +litmus/VULKAN/CADP/3_threads_3_instructions/20_simple.litmus,1 +litmus/VULKAN/CADP/3_threads_4_instructions/0_simple.litmus,1 +litmus/VULKAN/CADP/3_threads_4_instructions/1_simple.litmus,1 +litmus/VULKAN/CADP/3_threads_4_instructions/2_simple.litmus,1 +litmus/VULKAN/CADP/3_threads_4_instructions/3_simple.litmus,1 +litmus/VULKAN/CADP/3_threads_4_instructions/4_simple.litmus,1 +litmus/VULKAN/CADP/3_threads_4_instructions/5_simple.litmus,1 +litmus/VULKAN/CADP/3_threads_4_instructions/6_simple.litmus,1 +litmus/VULKAN/CADP/3_threads_4_instructions/7_simple.litmus,1 +litmus/VULKAN/CADP/3_threads_4_instructions/8_simple.litmus,1 +litmus/VULKAN/CADP/3_threads_4_instructions/9_simple.litmus,1 +litmus/VULKAN/CADP/3_threads_4_instructions/10_simple.litmus,1 +litmus/VULKAN/CADP/3_threads_4_instructions/11_simple.litmus,1 +litmus/VULKAN/CADP/3_threads_4_instructions/12_simple.litmus,1 +litmus/VULKAN/CADP/3_threads_4_instructions/13_simple.litmus,1 +litmus/VULKAN/CADP/3_threads_4_instructions/14_simple.litmus,1 +litmus/VULKAN/CADP/3_threads_4_instructions/15_simple.litmus,1 +litmus/VULKAN/CADP/3_threads_4_instructions/16_simple.litmus,1 +litmus/VULKAN/CADP/3_threads_4_instructions/17_simple.litmus,1 +litmus/VULKAN/CADP/3_threads_4_instructions/18_simple.litmus,1 +litmus/VULKAN/CADP/3_threads_4_instructions/19_simple.litmus,1 +litmus/VULKAN/CADP/3_threads_4_instructions/20_simple.litmus,1 +litmus/VULKAN/CADP/3_threads_4_instructions/21_simple.litmus,1 +litmus/VULKAN/CADP/3_threads_4_instructions/22_simple.litmus,1 +litmus/VULKAN/CADP/3_threads_4_instructions/23_simple.litmus,1 +litmus/VULKAN/CADP/3_threads_4_instructions/24_simple.litmus,1 +litmus/VULKAN/CADP/3_threads_4_instructions/25_simple.litmus,1 +litmus/VULKAN/CADP/3_threads_4_instructions/26_simple.litmus,1 +litmus/VULKAN/CADP/3_threads_4_instructions/27_simple.litmus,1 +litmus/VULKAN/CADP/3_threads_4_instructions/28_simple.litmus,1 +litmus/VULKAN/CADP/3_threads_4_instructions/29_simple.litmus,1 +litmus/VULKAN/CADP/3_threads_4_instructions/30_simple.litmus,1 +litmus/VULKAN/CADP/3_threads_4_instructions/31_simple.litmus,1 +litmus/VULKAN/CADP/3_threads_4_instructions/32_simple.litmus,1 +litmus/VULKAN/CADP/3_threads_4_instructions/33_simple.litmus,1 +litmus/VULKAN/CADP/3_threads_4_instructions/34_simple.litmus,1 +litmus/VULKAN/CADP/3_threads_4_instructions/35_simple.litmus,1 +litmus/VULKAN/CADP/3_threads_4_instructions/36_simple.litmus,1 +litmus/VULKAN/CADP/3_threads_4_instructions/37_simple.litmus,1 +litmus/VULKAN/CADP/3_threads_4_instructions/38_simple.litmus,1 +litmus/VULKAN/CADP/3_threads_4_instructions/39_simple.litmus,1 +litmus/VULKAN/CADP/3_threads_4_instructions/40_simple.litmus,1 +litmus/VULKAN/CADP/3_threads_4_instructions/41_simple.litmus,1 +litmus/VULKAN/CADP/3_threads_4_instructions/42_simple.litmus,1 +litmus/VULKAN/CADP/3_threads_4_instructions/43_simple.litmus,1 +litmus/VULKAN/CADP/3_threads_4_instructions/44_simple.litmus,1 +litmus/VULKAN/CADP/3_threads_4_instructions/45_simple.litmus,1 +litmus/VULKAN/CADP/3_threads_4_instructions/46_simple.litmus,1 +litmus/VULKAN/CADP/3_threads_4_instructions/47_simple.litmus,1 +litmus/VULKAN/CADP/3_threads_4_instructions/48_simple.litmus,1 +litmus/VULKAN/CADP/3_threads_4_instructions/49_simple.litmus,1 +litmus/VULKAN/CADP/3_threads_4_instructions/50_simple.litmus,1 +litmus/VULKAN/CADP/3_threads_4_instructions/51_simple.litmus,1 +litmus/VULKAN/CADP/3_threads_4_instructions/52_simple.litmus,1 +litmus/VULKAN/CADP/3_threads_4_instructions/53_simple.litmus,1 +litmus/VULKAN/CADP/3_threads_4_instructions/54_simple.litmus,1 +litmus/VULKAN/CADP/3_threads_4_instructions/55_simple.litmus,1 +litmus/VULKAN/CADP/3_threads_4_instructions/56_simple.litmus,1 +litmus/VULKAN/CADP/3_threads_4_instructions/57_simple.litmus,1 +litmus/VULKAN/CADP/3_threads_4_instructions/58_simple.litmus,1 +litmus/VULKAN/CADP/3_threads_4_instructions/59_simple.litmus,1 +litmus/VULKAN/CADP/3_threads_4_instructions/60_simple.litmus,1 +litmus/VULKAN/CADP/3_threads_4_instructions/61_simple.litmus,1 +litmus/VULKAN/CADP/3_threads_4_instructions/62_simple.litmus,1 +litmus/VULKAN/CADP/3_threads_4_instructions/63_simple.litmus,1 +litmus/VULKAN/CADP/3_threads_4_instructions/64_simple.litmus,1 +litmus/VULKAN/CADP/3_threads_4_instructions/65_simple.litmus,1 +litmus/VULKAN/CADP/3_threads_4_instructions/66_simple.litmus,1 +litmus/VULKAN/CADP/3_threads_4_instructions/67_simple.litmus,1 +litmus/VULKAN/CADP/3_threads_4_instructions/68_simple.litmus,1 +litmus/VULKAN/CADP/3_threads_4_instructions/69_simple.litmus,1 +litmus/VULKAN/CADP/3_threads_4_instructions/70_simple.litmus,1 +litmus/VULKAN/CADP/3_threads_4_instructions/71_simple.litmus,1 +litmus/VULKAN/CADP/3_threads_4_instructions/72_simple.litmus,1 +litmus/VULKAN/CADP/3_threads_4_instructions/73_simple.litmus,1 +litmus/VULKAN/CADP/3_threads_4_instructions/74_simple.litmus,1 +litmus/VULKAN/CADP/3_threads_4_instructions/75_simple.litmus,1 +litmus/VULKAN/CADP/3_threads_4_instructions/76_simple.litmus,1 +litmus/VULKAN/CADP/3_threads_4_instructions/77_simple.litmus,1 +litmus/VULKAN/CADP/3_threads_4_instructions/78_simple.litmus,1 +litmus/VULKAN/CADP/3_threads_4_instructions/79_simple.litmus,1 +litmus/VULKAN/CADP/3_threads_4_instructions/80_simple.litmus,1 +litmus/VULKAN/CADP/3_threads_4_instructions/81_simple.litmus,1 +litmus/VULKAN/CADP/3_threads_4_instructions/82_simple.litmus,1 +litmus/VULKAN/CADP/3_threads_4_instructions/83_simple.litmus,1 +litmus/VULKAN/CADP/3_threads_4_instructions/84_simple.litmus,1 +litmus/VULKAN/CADP/3_threads_4_instructions/85_simple.litmus,1 +litmus/VULKAN/CADP/3_threads_4_instructions/86_simple.litmus,1 +litmus/VULKAN/CADP/3_threads_4_instructions/87_simple.litmus,1 +litmus/VULKAN/CADP/3_threads_4_instructions/88_simple.litmus,1 +litmus/VULKAN/CADP/3_threads_4_instructions/89_simple.litmus,1 +litmus/VULKAN/CADP/3_threads_4_instructions/90_simple.litmus,1 +litmus/VULKAN/CADP/3_threads_4_instructions/91_simple.litmus,1 +litmus/VULKAN/CADP/3_threads_4_instructions/92_simple.litmus,1 +litmus/VULKAN/CADP/3_threads_4_instructions/93_simple.litmus,1 +litmus/VULKAN/CADP/3_threads_4_instructions/94_simple.litmus,1 +litmus/VULKAN/CADP/3_threads_4_instructions/95_simple.litmus,1 +litmus/VULKAN/CADP/3_threads_4_instructions/96_simple.litmus,1 +litmus/VULKAN/CADP/3_threads_4_instructions/97_simple.litmus,1 +litmus/VULKAN/CADP/3_threads_4_instructions/98_simple.litmus,1 +litmus/VULKAN/CADP/3_threads_4_instructions/99_simple.litmus,1 +litmus/VULKAN/CADP/3_threads_4_instructions/100_simple.litmus,1 +litmus/VULKAN/CADP/3_threads_4_instructions/101_simple.litmus,1 +litmus/VULKAN/CADP/3_threads_4_instructions/102_simple.litmus,1 +litmus/VULKAN/CADP/3_threads_4_instructions/103_simple.litmus,1 +litmus/VULKAN/CADP/3_threads_4_instructions/104_simple.litmus,1 diff --git a/dartagnan/src/test/resources/VULKAN-Liveness-HSA-expected.csv b/dartagnan/src/test/resources/VULKAN-Liveness-HSA-expected.csv new file mode 100644 index 0000000000..e3e1851be1 --- /dev/null +++ b/dartagnan/src/test/resources/VULKAN-Liveness-HSA-expected.csv @@ -0,0 +1,483 @@ +litmus/VULKAN/CADP/2_threads_2_instructions/0_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_2_instructions/1_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_2_instructions/2_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_2_instructions/3_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_2_instructions/4_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_2_instructions/5_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_2_instructions/6_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_2_instructions/7_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_3_instructions/0_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/1_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/2_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/3_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_3_instructions/4_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/5_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/6_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/7_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_3_instructions/8_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/9_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_3_instructions/10_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_3_instructions/11_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_3_instructions/12_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/13_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/14_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/15_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_3_instructions/16_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/17_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/18_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/19_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/20_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/21_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/22_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_3_instructions/23_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/24_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_3_instructions/25_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_3_instructions/26_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_3_instructions/27_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/28_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/29_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/30_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_3_instructions/31_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/32_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/33_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_3_instructions/34_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/35_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/36_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/37_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_3_instructions/38_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_3_instructions/39_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/40_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_3_instructions/41_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_3_instructions/42_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_3_instructions/43_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/44_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_3_instructions/45_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/46_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/47_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/48_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_3_instructions/49_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_3_instructions/50_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/51_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_3_instructions/52_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/53_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/54_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/55_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/56_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/57_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/58_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_3_instructions/59_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/60_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/61_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_3_instructions/62_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/63_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_3_instructions/64_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/65_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_3_instructions/66_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/67_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_3_instructions/68_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/69_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/70_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_3_instructions/71_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/72_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/73_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/74_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_3_instructions/75_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/76_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/77_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_3_instructions/78_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/79_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_3_instructions/80_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/81_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/82_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/83_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/84_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/85_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/86_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/87_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_3_instructions/88_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/89_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/90_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/91_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/92_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/93_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/94_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/95_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/96_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/97_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/98_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_3_instructions/99_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/100_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/101_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/102_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/103_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/104_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/105_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/106_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_3_instructions/107_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/108_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/109_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_3_instructions/110_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/111_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_3_instructions/112_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_3_instructions/113_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/114_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/115_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_3_instructions/116_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/117_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_3_instructions/118_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/119_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_3_instructions/120_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/121_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_3_instructions/122_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_3_instructions/123_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/124_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/125_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/126_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_3_instructions/127_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/128_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/129_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/130_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/131_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/132_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/133_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_3_instructions/134_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_3_instructions/135_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/136_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/137_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/138_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_3_instructions/139_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/140_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/141_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/142_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/143_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_3_instructions/144_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/145_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/146_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/147_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/148_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/149_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/150_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/151_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/152_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/153_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/154_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/155_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/156_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/157_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_3_instructions/158_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/159_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_3_instructions/160_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/161_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/162_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/163_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/164_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_3_instructions/165_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/166_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/167_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_3_instructions/168_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/169_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/170_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/171_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/172_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/173_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/174_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/175_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_4_instructions/0_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/1_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/2_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/3_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/4_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/5_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/6_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/7_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/8_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/9_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/10_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/11_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/12_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/13_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/14_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/15_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/16_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/17_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/18_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/19_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/20_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/21_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/22_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/23_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/24_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/25_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/26_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/27_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/28_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_4_instructions/29_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/30_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_4_instructions/31_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/32_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/33_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/34_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/35_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/36_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/37_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/38_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/39_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/40_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/41_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/42_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/43_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/44_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/45_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/46_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_4_instructions/47_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/48_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_4_instructions/49_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/50_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/51_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/52_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/53_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/54_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/55_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/56_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/57_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/58_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/59_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/60_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/61_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/62_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/63_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/64_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/65_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/66_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/67_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/68_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/69_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/70_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/71_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/72_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/73_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/74_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/75_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_4_instructions/76_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_4_instructions/77_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/78_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/79_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/80_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/81_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/82_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/83_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/84_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_4_instructions/85_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/86_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/87_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_4_instructions/88_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/89_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/90_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/91_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/92_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/93_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/94_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/95_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/96_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/97_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/98_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/99_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_4_instructions/100_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/101_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/102_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_4_instructions/103_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/104_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/105_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/106_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/107_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_4_instructions/108_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/109_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/110_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/111_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/112_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/113_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/114_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/115_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/116_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_4_instructions/117_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/118_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_4_instructions/119_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/120_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_4_instructions/121_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/122_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_4_instructions/123_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/124_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_4_instructions/125_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/126_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_4_instructions/127_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/128_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/129_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/130_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/131_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/132_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/133_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_4_instructions/134_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_4_instructions/135_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/136_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/137_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_4_instructions/138_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/139_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_4_instructions/140_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/141_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/142_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_4_instructions/143_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/144_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/145_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/146_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/147_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/148_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/149_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/150_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/151_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/152_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/153_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/154_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/155_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_4_instructions/156_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_4_instructions/157_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/158_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/159_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_4_instructions/160_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/161_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/162_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/163_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/164_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/165_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/166_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/167_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/168_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_4_instructions/169_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_4_instructions/170_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_4_instructions/171_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_4_instructions/172_simple.litmus,1 +litmus/VULKAN/CADP/3_threads_3_instructions/0_simple.litmus,0 +litmus/VULKAN/CADP/3_threads_3_instructions/1_simple.litmus,0 +litmus/VULKAN/CADP/3_threads_3_instructions/2_simple.litmus,0 +litmus/VULKAN/CADP/3_threads_3_instructions/3_simple.litmus,1 +litmus/VULKAN/CADP/3_threads_3_instructions/4_simple.litmus,0 +litmus/VULKAN/CADP/3_threads_3_instructions/5_simple.litmus,0 +litmus/VULKAN/CADP/3_threads_3_instructions/6_simple.litmus,0 +litmus/VULKAN/CADP/3_threads_3_instructions/7_simple.litmus,0 +litmus/VULKAN/CADP/3_threads_3_instructions/8_simple.litmus,0 +litmus/VULKAN/CADP/3_threads_3_instructions/9_simple.litmus,0 +litmus/VULKAN/CADP/3_threads_3_instructions/10_simple.litmus,0 +litmus/VULKAN/CADP/3_threads_3_instructions/11_simple.litmus,1 +litmus/VULKAN/CADP/3_threads_3_instructions/12_simple.litmus,0 +litmus/VULKAN/CADP/3_threads_3_instructions/13_simple.litmus,1 +litmus/VULKAN/CADP/3_threads_3_instructions/14_simple.litmus,0 +litmus/VULKAN/CADP/3_threads_3_instructions/15_simple.litmus,0 +litmus/VULKAN/CADP/3_threads_3_instructions/16_simple.litmus,0 +litmus/VULKAN/CADP/3_threads_3_instructions/17_simple.litmus,0 +litmus/VULKAN/CADP/3_threads_3_instructions/18_simple.litmus,1 +litmus/VULKAN/CADP/3_threads_3_instructions/19_simple.litmus,0 +litmus/VULKAN/CADP/3_threads_3_instructions/20_simple.litmus,1 +litmus/VULKAN/CADP/3_threads_4_instructions/0_simple.litmus,0 +litmus/VULKAN/CADP/3_threads_4_instructions/1_simple.litmus,0 +litmus/VULKAN/CADP/3_threads_4_instructions/2_simple.litmus,0 +litmus/VULKAN/CADP/3_threads_4_instructions/3_simple.litmus,0 +litmus/VULKAN/CADP/3_threads_4_instructions/4_simple.litmus,1 +litmus/VULKAN/CADP/3_threads_4_instructions/5_simple.litmus,0 +litmus/VULKAN/CADP/3_threads_4_instructions/6_simple.litmus,0 +litmus/VULKAN/CADP/3_threads_4_instructions/7_simple.litmus,0 +litmus/VULKAN/CADP/3_threads_4_instructions/8_simple.litmus,0 +litmus/VULKAN/CADP/3_threads_4_instructions/9_simple.litmus,0 +litmus/VULKAN/CADP/3_threads_4_instructions/10_simple.litmus,1 +litmus/VULKAN/CADP/3_threads_4_instructions/11_simple.litmus,0 +litmus/VULKAN/CADP/3_threads_4_instructions/12_simple.litmus,0 +litmus/VULKAN/CADP/3_threads_4_instructions/13_simple.litmus,0 +litmus/VULKAN/CADP/3_threads_4_instructions/14_simple.litmus,1 +litmus/VULKAN/CADP/3_threads_4_instructions/15_simple.litmus,0 +litmus/VULKAN/CADP/3_threads_4_instructions/16_simple.litmus,0 +litmus/VULKAN/CADP/3_threads_4_instructions/17_simple.litmus,0 +litmus/VULKAN/CADP/3_threads_4_instructions/18_simple.litmus,0 +litmus/VULKAN/CADP/3_threads_4_instructions/19_simple.litmus,0 +litmus/VULKAN/CADP/3_threads_4_instructions/20_simple.litmus,0 +litmus/VULKAN/CADP/3_threads_4_instructions/21_simple.litmus,0 +litmus/VULKAN/CADP/3_threads_4_instructions/22_simple.litmus,0 +litmus/VULKAN/CADP/3_threads_4_instructions/23_simple.litmus,0 +litmus/VULKAN/CADP/3_threads_4_instructions/24_simple.litmus,0 +litmus/VULKAN/CADP/3_threads_4_instructions/25_simple.litmus,0 +litmus/VULKAN/CADP/3_threads_4_instructions/26_simple.litmus,0 +litmus/VULKAN/CADP/3_threads_4_instructions/27_simple.litmus,0 +litmus/VULKAN/CADP/3_threads_4_instructions/28_simple.litmus,0 +litmus/VULKAN/CADP/3_threads_4_instructions/29_simple.litmus,1 +litmus/VULKAN/CADP/3_threads_4_instructions/30_simple.litmus,1 +litmus/VULKAN/CADP/3_threads_4_instructions/31_simple.litmus,0 +litmus/VULKAN/CADP/3_threads_4_instructions/32_simple.litmus,0 +litmus/VULKAN/CADP/3_threads_4_instructions/33_simple.litmus,0 +litmus/VULKAN/CADP/3_threads_4_instructions/34_simple.litmus,0 +litmus/VULKAN/CADP/3_threads_4_instructions/35_simple.litmus,0 +litmus/VULKAN/CADP/3_threads_4_instructions/36_simple.litmus,1 +litmus/VULKAN/CADP/3_threads_4_instructions/37_simple.litmus,0 +litmus/VULKAN/CADP/3_threads_4_instructions/38_simple.litmus,1 +litmus/VULKAN/CADP/3_threads_4_instructions/39_simple.litmus,0 +litmus/VULKAN/CADP/3_threads_4_instructions/40_simple.litmus,0 +litmus/VULKAN/CADP/3_threads_4_instructions/41_simple.litmus,0 +litmus/VULKAN/CADP/3_threads_4_instructions/42_simple.litmus,0 +litmus/VULKAN/CADP/3_threads_4_instructions/43_simple.litmus,0 +litmus/VULKAN/CADP/3_threads_4_instructions/44_simple.litmus,0 +litmus/VULKAN/CADP/3_threads_4_instructions/45_simple.litmus,0 +litmus/VULKAN/CADP/3_threads_4_instructions/46_simple.litmus,0 +litmus/VULKAN/CADP/3_threads_4_instructions/47_simple.litmus,0 +litmus/VULKAN/CADP/3_threads_4_instructions/48_simple.litmus,0 +litmus/VULKAN/CADP/3_threads_4_instructions/49_simple.litmus,0 +litmus/VULKAN/CADP/3_threads_4_instructions/50_simple.litmus,0 +litmus/VULKAN/CADP/3_threads_4_instructions/51_simple.litmus,0 +litmus/VULKAN/CADP/3_threads_4_instructions/52_simple.litmus,0 +litmus/VULKAN/CADP/3_threads_4_instructions/53_simple.litmus,0 +litmus/VULKAN/CADP/3_threads_4_instructions/54_simple.litmus,0 +litmus/VULKAN/CADP/3_threads_4_instructions/55_simple.litmus,0 +litmus/VULKAN/CADP/3_threads_4_instructions/56_simple.litmus,0 +litmus/VULKAN/CADP/3_threads_4_instructions/57_simple.litmus,0 +litmus/VULKAN/CADP/3_threads_4_instructions/58_simple.litmus,0 +litmus/VULKAN/CADP/3_threads_4_instructions/59_simple.litmus,0 +litmus/VULKAN/CADP/3_threads_4_instructions/60_simple.litmus,0 +litmus/VULKAN/CADP/3_threads_4_instructions/61_simple.litmus,0 +litmus/VULKAN/CADP/3_threads_4_instructions/62_simple.litmus,0 +litmus/VULKAN/CADP/3_threads_4_instructions/63_simple.litmus,0 +litmus/VULKAN/CADP/3_threads_4_instructions/64_simple.litmus,0 +litmus/VULKAN/CADP/3_threads_4_instructions/65_simple.litmus,0 +litmus/VULKAN/CADP/3_threads_4_instructions/66_simple.litmus,0 +litmus/VULKAN/CADP/3_threads_4_instructions/67_simple.litmus,0 +litmus/VULKAN/CADP/3_threads_4_instructions/68_simple.litmus,0 +litmus/VULKAN/CADP/3_threads_4_instructions/69_simple.litmus,0 +litmus/VULKAN/CADP/3_threads_4_instructions/70_simple.litmus,0 +litmus/VULKAN/CADP/3_threads_4_instructions/71_simple.litmus,0 +litmus/VULKAN/CADP/3_threads_4_instructions/72_simple.litmus,1 +litmus/VULKAN/CADP/3_threads_4_instructions/73_simple.litmus,0 +litmus/VULKAN/CADP/3_threads_4_instructions/74_simple.litmus,0 +litmus/VULKAN/CADP/3_threads_4_instructions/75_simple.litmus,0 +litmus/VULKAN/CADP/3_threads_4_instructions/76_simple.litmus,0 +litmus/VULKAN/CADP/3_threads_4_instructions/77_simple.litmus,0 +litmus/VULKAN/CADP/3_threads_4_instructions/78_simple.litmus,0 +litmus/VULKAN/CADP/3_threads_4_instructions/79_simple.litmus,0 +litmus/VULKAN/CADP/3_threads_4_instructions/80_simple.litmus,1 +litmus/VULKAN/CADP/3_threads_4_instructions/81_simple.litmus,0 +litmus/VULKAN/CADP/3_threads_4_instructions/82_simple.litmus,1 +litmus/VULKAN/CADP/3_threads_4_instructions/83_simple.litmus,0 +litmus/VULKAN/CADP/3_threads_4_instructions/84_simple.litmus,1 +litmus/VULKAN/CADP/3_threads_4_instructions/85_simple.litmus,0 +litmus/VULKAN/CADP/3_threads_4_instructions/86_simple.litmus,1 +litmus/VULKAN/CADP/3_threads_4_instructions/87_simple.litmus,0 +litmus/VULKAN/CADP/3_threads_4_instructions/88_simple.litmus,0 +litmus/VULKAN/CADP/3_threads_4_instructions/89_simple.litmus,0 +litmus/VULKAN/CADP/3_threads_4_instructions/90_simple.litmus,0 +litmus/VULKAN/CADP/3_threads_4_instructions/91_simple.litmus,1 +litmus/VULKAN/CADP/3_threads_4_instructions/92_simple.litmus,1 +litmus/VULKAN/CADP/3_threads_4_instructions/93_simple.litmus,1 +litmus/VULKAN/CADP/3_threads_4_instructions/94_simple.litmus,1 +litmus/VULKAN/CADP/3_threads_4_instructions/95_simple.litmus,0 +litmus/VULKAN/CADP/3_threads_4_instructions/96_simple.litmus,0 +litmus/VULKAN/CADP/3_threads_4_instructions/97_simple.litmus,0 +litmus/VULKAN/CADP/3_threads_4_instructions/98_simple.litmus,0 +litmus/VULKAN/CADP/3_threads_4_instructions/99_simple.litmus,1 +litmus/VULKAN/CADP/3_threads_4_instructions/100_simple.litmus,1 +litmus/VULKAN/CADP/3_threads_4_instructions/101_simple.litmus,0 +litmus/VULKAN/CADP/3_threads_4_instructions/102_simple.litmus,0 +litmus/VULKAN/CADP/3_threads_4_instructions/103_simple.litmus,0 +litmus/VULKAN/CADP/3_threads_4_instructions/104_simple.litmus,0 diff --git a/dartagnan/src/test/resources/VULKAN-Liveness-OBE-expected.csv b/dartagnan/src/test/resources/VULKAN-Liveness-OBE-expected.csv new file mode 100644 index 0000000000..416425fa7c --- /dev/null +++ b/dartagnan/src/test/resources/VULKAN-Liveness-OBE-expected.csv @@ -0,0 +1,483 @@ +litmus/VULKAN/CADP/2_threads_2_instructions/0_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_2_instructions/1_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_2_instructions/2_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_2_instructions/3_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_2_instructions/4_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_2_instructions/5_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_2_instructions/6_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_2_instructions/7_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_3_instructions/0_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/1_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/2_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/3_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_3_instructions/4_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/5_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/6_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/7_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_3_instructions/8_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/9_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/10_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_3_instructions/11_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_3_instructions/12_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_3_instructions/13_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_3_instructions/14_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_3_instructions/15_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_3_instructions/16_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/17_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/18_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_3_instructions/19_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_3_instructions/20_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/21_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/22_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/23_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/24_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_3_instructions/25_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_3_instructions/26_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_3_instructions/27_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/28_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/29_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/30_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_3_instructions/31_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/32_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/33_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_3_instructions/34_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/35_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/36_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/37_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_3_instructions/38_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_3_instructions/39_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/40_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_3_instructions/41_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_3_instructions/42_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/43_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/44_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_3_instructions/45_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/46_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_3_instructions/47_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/48_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_3_instructions/49_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_3_instructions/50_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_3_instructions/51_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_3_instructions/52_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/53_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/54_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_3_instructions/55_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/56_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_3_instructions/57_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/58_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_3_instructions/59_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/60_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_3_instructions/61_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_3_instructions/62_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/63_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/64_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/65_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_3_instructions/66_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/67_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_3_instructions/68_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/69_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/70_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_3_instructions/71_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/72_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_3_instructions/73_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/74_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_3_instructions/75_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/76_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/77_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_3_instructions/78_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_3_instructions/79_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_3_instructions/80_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/81_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_3_instructions/82_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/83_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/84_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/85_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/86_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/87_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/88_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/89_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_3_instructions/90_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_3_instructions/91_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_3_instructions/92_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/93_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/94_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/95_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/96_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/97_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_3_instructions/98_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_3_instructions/99_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/100_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/101_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_3_instructions/102_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/103_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_3_instructions/104_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_3_instructions/105_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_3_instructions/106_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_3_instructions/107_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/108_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_3_instructions/109_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_3_instructions/110_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/111_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_3_instructions/112_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/113_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/114_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/115_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_3_instructions/116_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_3_instructions/117_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_3_instructions/118_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/119_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_3_instructions/120_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/121_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_3_instructions/122_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_3_instructions/123_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_3_instructions/124_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_3_instructions/125_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/126_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/127_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/128_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_3_instructions/129_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/130_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/131_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/132_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_3_instructions/133_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_3_instructions/134_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_3_instructions/135_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/136_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_3_instructions/137_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/138_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_3_instructions/139_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/140_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/141_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/142_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_3_instructions/143_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_3_instructions/144_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/145_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/146_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/147_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/148_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/149_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_3_instructions/150_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/151_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_3_instructions/152_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/153_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/154_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/155_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/156_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/157_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/158_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_3_instructions/159_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/160_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/161_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_3_instructions/162_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/163_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/164_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_3_instructions/165_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/166_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/167_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/168_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/169_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/170_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/171_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/172_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/173_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/174_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_3_instructions/175_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/0_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/1_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/2_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/3_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/4_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/5_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/6_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/7_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/8_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/9_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/10_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/11_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/12_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/13_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/14_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/15_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/16_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/17_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/18_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/19_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/20_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/21_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/22_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/23_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/24_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/25_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/26_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/27_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/28_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/29_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/30_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/31_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/32_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/33_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/34_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/35_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/36_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/37_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/38_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/39_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/40_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/41_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/42_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/43_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/44_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/45_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/46_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/47_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/48_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/49_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/50_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/51_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/52_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/53_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/54_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/55_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/56_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/57_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/58_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/59_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/60_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/61_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/62_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/63_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/64_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/65_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/66_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/67_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/68_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/69_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/70_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/71_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/72_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/73_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/74_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/75_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/76_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/77_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/78_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/79_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/80_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/81_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/82_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/83_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/84_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/85_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/86_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/87_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/88_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/89_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/90_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/91_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/92_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/93_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/94_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/95_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/96_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/97_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/98_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/99_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/100_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/101_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/102_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/103_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/104_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/105_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/106_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/107_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/108_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/109_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/110_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/111_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/112_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/113_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/114_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/115_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/116_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_4_instructions/117_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_4_instructions/118_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_4_instructions/119_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_4_instructions/120_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/121_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/122_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/123_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/124_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/125_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/126_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/127_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/128_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/129_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/130_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/131_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/132_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/133_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/134_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/135_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/136_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/137_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/138_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/139_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/140_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/141_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/142_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/143_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/144_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/145_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/146_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/147_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/148_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/149_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/150_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/151_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/152_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/153_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/154_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/155_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/156_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/157_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/158_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/159_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/160_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/161_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/162_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/163_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/164_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/165_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/166_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/167_simple.litmus,0 +litmus/VULKAN/CADP/2_threads_4_instructions/168_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_4_instructions/169_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_4_instructions/170_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_4_instructions/171_simple.litmus,1 +litmus/VULKAN/CADP/2_threads_4_instructions/172_simple.litmus,1 +litmus/VULKAN/CADP/3_threads_3_instructions/0_simple.litmus,0 +litmus/VULKAN/CADP/3_threads_3_instructions/1_simple.litmus,0 +litmus/VULKAN/CADP/3_threads_3_instructions/2_simple.litmus,0 +litmus/VULKAN/CADP/3_threads_3_instructions/3_simple.litmus,0 +litmus/VULKAN/CADP/3_threads_3_instructions/4_simple.litmus,0 +litmus/VULKAN/CADP/3_threads_3_instructions/5_simple.litmus,0 +litmus/VULKAN/CADP/3_threads_3_instructions/6_simple.litmus,0 +litmus/VULKAN/CADP/3_threads_3_instructions/7_simple.litmus,0 +litmus/VULKAN/CADP/3_threads_3_instructions/8_simple.litmus,0 +litmus/VULKAN/CADP/3_threads_3_instructions/9_simple.litmus,0 +litmus/VULKAN/CADP/3_threads_3_instructions/10_simple.litmus,0 +litmus/VULKAN/CADP/3_threads_3_instructions/11_simple.litmus,0 +litmus/VULKAN/CADP/3_threads_3_instructions/12_simple.litmus,0 +litmus/VULKAN/CADP/3_threads_3_instructions/13_simple.litmus,0 +litmus/VULKAN/CADP/3_threads_3_instructions/14_simple.litmus,0 +litmus/VULKAN/CADP/3_threads_3_instructions/15_simple.litmus,0 +litmus/VULKAN/CADP/3_threads_3_instructions/16_simple.litmus,0 +litmus/VULKAN/CADP/3_threads_3_instructions/17_simple.litmus,0 +litmus/VULKAN/CADP/3_threads_3_instructions/18_simple.litmus,0 +litmus/VULKAN/CADP/3_threads_3_instructions/19_simple.litmus,0 +litmus/VULKAN/CADP/3_threads_3_instructions/20_simple.litmus,0 +litmus/VULKAN/CADP/3_threads_4_instructions/0_simple.litmus,0 +litmus/VULKAN/CADP/3_threads_4_instructions/1_simple.litmus,0 +litmus/VULKAN/CADP/3_threads_4_instructions/2_simple.litmus,0 +litmus/VULKAN/CADP/3_threads_4_instructions/3_simple.litmus,0 +litmus/VULKAN/CADP/3_threads_4_instructions/4_simple.litmus,0 +litmus/VULKAN/CADP/3_threads_4_instructions/5_simple.litmus,0 +litmus/VULKAN/CADP/3_threads_4_instructions/6_simple.litmus,0 +litmus/VULKAN/CADP/3_threads_4_instructions/7_simple.litmus,0 +litmus/VULKAN/CADP/3_threads_4_instructions/8_simple.litmus,0 +litmus/VULKAN/CADP/3_threads_4_instructions/9_simple.litmus,0 +litmus/VULKAN/CADP/3_threads_4_instructions/10_simple.litmus,0 +litmus/VULKAN/CADP/3_threads_4_instructions/11_simple.litmus,0 +litmus/VULKAN/CADP/3_threads_4_instructions/12_simple.litmus,0 +litmus/VULKAN/CADP/3_threads_4_instructions/13_simple.litmus,0 +litmus/VULKAN/CADP/3_threads_4_instructions/14_simple.litmus,0 +litmus/VULKAN/CADP/3_threads_4_instructions/15_simple.litmus,0 +litmus/VULKAN/CADP/3_threads_4_instructions/16_simple.litmus,0 +litmus/VULKAN/CADP/3_threads_4_instructions/17_simple.litmus,0 +litmus/VULKAN/CADP/3_threads_4_instructions/18_simple.litmus,0 +litmus/VULKAN/CADP/3_threads_4_instructions/19_simple.litmus,0 +litmus/VULKAN/CADP/3_threads_4_instructions/20_simple.litmus,0 +litmus/VULKAN/CADP/3_threads_4_instructions/21_simple.litmus,0 +litmus/VULKAN/CADP/3_threads_4_instructions/22_simple.litmus,0 +litmus/VULKAN/CADP/3_threads_4_instructions/23_simple.litmus,0 +litmus/VULKAN/CADP/3_threads_4_instructions/24_simple.litmus,0 +litmus/VULKAN/CADP/3_threads_4_instructions/25_simple.litmus,0 +litmus/VULKAN/CADP/3_threads_4_instructions/26_simple.litmus,0 +litmus/VULKAN/CADP/3_threads_4_instructions/27_simple.litmus,0 +litmus/VULKAN/CADP/3_threads_4_instructions/28_simple.litmus,0 +litmus/VULKAN/CADP/3_threads_4_instructions/29_simple.litmus,0 +litmus/VULKAN/CADP/3_threads_4_instructions/30_simple.litmus,0 +litmus/VULKAN/CADP/3_threads_4_instructions/31_simple.litmus,0 +litmus/VULKAN/CADP/3_threads_4_instructions/32_simple.litmus,0 +litmus/VULKAN/CADP/3_threads_4_instructions/33_simple.litmus,0 +litmus/VULKAN/CADP/3_threads_4_instructions/34_simple.litmus,0 +litmus/VULKAN/CADP/3_threads_4_instructions/35_simple.litmus,0 +litmus/VULKAN/CADP/3_threads_4_instructions/36_simple.litmus,0 +litmus/VULKAN/CADP/3_threads_4_instructions/37_simple.litmus,0 +litmus/VULKAN/CADP/3_threads_4_instructions/38_simple.litmus,0 +litmus/VULKAN/CADP/3_threads_4_instructions/39_simple.litmus,0 +litmus/VULKAN/CADP/3_threads_4_instructions/40_simple.litmus,0 +litmus/VULKAN/CADP/3_threads_4_instructions/41_simple.litmus,0 +litmus/VULKAN/CADP/3_threads_4_instructions/42_simple.litmus,0 +litmus/VULKAN/CADP/3_threads_4_instructions/43_simple.litmus,0 +litmus/VULKAN/CADP/3_threads_4_instructions/44_simple.litmus,0 +litmus/VULKAN/CADP/3_threads_4_instructions/45_simple.litmus,0 +litmus/VULKAN/CADP/3_threads_4_instructions/46_simple.litmus,0 +litmus/VULKAN/CADP/3_threads_4_instructions/47_simple.litmus,0 +litmus/VULKAN/CADP/3_threads_4_instructions/48_simple.litmus,0 +litmus/VULKAN/CADP/3_threads_4_instructions/49_simple.litmus,0 +litmus/VULKAN/CADP/3_threads_4_instructions/50_simple.litmus,0 +litmus/VULKAN/CADP/3_threads_4_instructions/51_simple.litmus,0 +litmus/VULKAN/CADP/3_threads_4_instructions/52_simple.litmus,0 +litmus/VULKAN/CADP/3_threads_4_instructions/53_simple.litmus,0 +litmus/VULKAN/CADP/3_threads_4_instructions/54_simple.litmus,0 +litmus/VULKAN/CADP/3_threads_4_instructions/55_simple.litmus,0 +litmus/VULKAN/CADP/3_threads_4_instructions/56_simple.litmus,0 +litmus/VULKAN/CADP/3_threads_4_instructions/57_simple.litmus,0 +litmus/VULKAN/CADP/3_threads_4_instructions/58_simple.litmus,0 +litmus/VULKAN/CADP/3_threads_4_instructions/59_simple.litmus,0 +litmus/VULKAN/CADP/3_threads_4_instructions/60_simple.litmus,0 +litmus/VULKAN/CADP/3_threads_4_instructions/61_simple.litmus,0 +litmus/VULKAN/CADP/3_threads_4_instructions/62_simple.litmus,0 +litmus/VULKAN/CADP/3_threads_4_instructions/63_simple.litmus,0 +litmus/VULKAN/CADP/3_threads_4_instructions/64_simple.litmus,0 +litmus/VULKAN/CADP/3_threads_4_instructions/65_simple.litmus,0 +litmus/VULKAN/CADP/3_threads_4_instructions/66_simple.litmus,0 +litmus/VULKAN/CADP/3_threads_4_instructions/67_simple.litmus,0 +litmus/VULKAN/CADP/3_threads_4_instructions/68_simple.litmus,0 +litmus/VULKAN/CADP/3_threads_4_instructions/69_simple.litmus,0 +litmus/VULKAN/CADP/3_threads_4_instructions/70_simple.litmus,0 +litmus/VULKAN/CADP/3_threads_4_instructions/71_simple.litmus,0 +litmus/VULKAN/CADP/3_threads_4_instructions/72_simple.litmus,0 +litmus/VULKAN/CADP/3_threads_4_instructions/73_simple.litmus,0 +litmus/VULKAN/CADP/3_threads_4_instructions/74_simple.litmus,0 +litmus/VULKAN/CADP/3_threads_4_instructions/75_simple.litmus,0 +litmus/VULKAN/CADP/3_threads_4_instructions/76_simple.litmus,0 +litmus/VULKAN/CADP/3_threads_4_instructions/77_simple.litmus,0 +litmus/VULKAN/CADP/3_threads_4_instructions/78_simple.litmus,0 +litmus/VULKAN/CADP/3_threads_4_instructions/79_simple.litmus,0 +litmus/VULKAN/CADP/3_threads_4_instructions/80_simple.litmus,0 +litmus/VULKAN/CADP/3_threads_4_instructions/81_simple.litmus,0 +litmus/VULKAN/CADP/3_threads_4_instructions/82_simple.litmus,0 +litmus/VULKAN/CADP/3_threads_4_instructions/83_simple.litmus,0 +litmus/VULKAN/CADP/3_threads_4_instructions/84_simple.litmus,0 +litmus/VULKAN/CADP/3_threads_4_instructions/85_simple.litmus,0 +litmus/VULKAN/CADP/3_threads_4_instructions/86_simple.litmus,0 +litmus/VULKAN/CADP/3_threads_4_instructions/87_simple.litmus,0 +litmus/VULKAN/CADP/3_threads_4_instructions/88_simple.litmus,0 +litmus/VULKAN/CADP/3_threads_4_instructions/89_simple.litmus,0 +litmus/VULKAN/CADP/3_threads_4_instructions/90_simple.litmus,0 +litmus/VULKAN/CADP/3_threads_4_instructions/91_simple.litmus,0 +litmus/VULKAN/CADP/3_threads_4_instructions/92_simple.litmus,0 +litmus/VULKAN/CADP/3_threads_4_instructions/93_simple.litmus,0 +litmus/VULKAN/CADP/3_threads_4_instructions/94_simple.litmus,0 +litmus/VULKAN/CADP/3_threads_4_instructions/95_simple.litmus,0 +litmus/VULKAN/CADP/3_threads_4_instructions/96_simple.litmus,0 +litmus/VULKAN/CADP/3_threads_4_instructions/97_simple.litmus,0 +litmus/VULKAN/CADP/3_threads_4_instructions/98_simple.litmus,0 +litmus/VULKAN/CADP/3_threads_4_instructions/99_simple.litmus,0 +litmus/VULKAN/CADP/3_threads_4_instructions/100_simple.litmus,0 +litmus/VULKAN/CADP/3_threads_4_instructions/101_simple.litmus,0 +litmus/VULKAN/CADP/3_threads_4_instructions/102_simple.litmus,0 +litmus/VULKAN/CADP/3_threads_4_instructions/103_simple.litmus,0 +litmus/VULKAN/CADP/3_threads_4_instructions/104_simple.litmus,0 diff --git a/dartagnan/src/test/resources/VULKAN-Liveness-expected.csv b/dartagnan/src/test/resources/VULKAN-Liveness-expected.csv deleted file mode 100644 index af7e7c2f1c..0000000000 --- a/dartagnan/src/test/resources/VULKAN-Liveness-expected.csv +++ /dev/null @@ -1,77 +0,0 @@ -litmus/VULKAN/CADP/2_threads_2_instructions/4_simple.litmus,1 -litmus/VULKAN/CADP/2_threads_2_instructions/5_simple.litmus,1 -litmus/VULKAN/CADP/2_threads_3_instructions/4_simple.litmus,1 -litmus/VULKAN/CADP/2_threads_3_instructions/10_simple.litmus,1 -litmus/VULKAN/CADP/2_threads_3_instructions/14_simple.litmus,1 -litmus/VULKAN/CADP/2_threads_3_instructions/19_simple.litmus,1 -litmus/VULKAN/CADP/2_threads_3_instructions/22_simple.litmus,1 -litmus/VULKAN/CADP/2_threads_3_instructions/25_simple.litmus,1 -litmus/VULKAN/CADP/2_threads_3_instructions/30_simple.litmus,1 -litmus/VULKAN/CADP/2_threads_3_instructions/46_simple.litmus,1 -litmus/VULKAN/CADP/2_threads_3_instructions/50_simple.litmus,1 -litmus/VULKAN/CADP/2_threads_3_instructions/58_simple.litmus,1 -litmus/VULKAN/CADP/2_threads_4_instructions/30_simple.litmus,1 -litmus/VULKAN/CADP/2_threads_4_instructions/31_simple.litmus,1 -litmus/VULKAN/CADP/2_threads_4_instructions/46_simple.litmus,1 -litmus/VULKAN/CADP/2_threads_4_instructions/47_simple.litmus,1 -litmus/VULKAN/CADP/2_threads_4_instructions/48_simple.litmus,1 -litmus/VULKAN/CADP/2_threads_4_instructions/49_simple.litmus,1 -litmus/VULKAN/CADP/2_threads_4_instructions/66_simple.litmus,1 -litmus/VULKAN/CADP/2_threads_4_instructions/67_simple.litmus,1 -litmus/VULKAN/CADP/2_threads_4_instructions/68_simple.litmus,1 -litmus/VULKAN/CADP/2_threads_4_instructions/69_simple.litmus,1 -litmus/VULKAN/CADP/2_threads_4_instructions/74_simple.litmus,1 -litmus/VULKAN/CADP/2_threads_4_instructions/75_simple.litmus,1 -litmus/VULKAN/CADP/2_threads_4_instructions/76_simple.litmus,1 -litmus/VULKAN/CADP/2_threads_4_instructions/77_simple.litmus,1 -litmus/VULKAN/CADP/2_threads_4_instructions/96_simple.litmus,1 -litmus/VULKAN/CADP/2_threads_4_instructions/97_simple.litmus,1 -litmus/VULKAN/CADP/2_threads_4_instructions/102_simple.litmus,1 -litmus/VULKAN/CADP/2_threads_4_instructions/103_simple.litmus,1 -litmus/VULKAN/CADP/2_threads_4_instructions/120_simple.litmus,1 -litmus/VULKAN/CADP/2_threads_4_instructions/121_simple.litmus,1 -litmus/VULKAN/CADP/2_threads_4_instructions/124_simple.litmus,1 -litmus/VULKAN/CADP/2_threads_4_instructions/125_simple.litmus,1 -litmus/VULKAN/CADP/2_threads_4_instructions/126_simple.litmus,1 -litmus/VULKAN/CADP/2_threads_4_instructions/127_simple.litmus,1 -litmus/VULKAN/CADP/2_threads_4_instructions/136_simple.litmus,1 -litmus/VULKAN/CADP/2_threads_4_instructions/137_simple.litmus,1 -litmus/VULKAN/CADP/2_threads_4_instructions/138_simple.litmus,1 -litmus/VULKAN/CADP/2_threads_4_instructions/139_simple.litmus,1 -litmus/VULKAN/CADP/3_threads_3_instructions/9_simple.litmus,1 -litmus/VULKAN/CADP/3_threads_3_instructions/10_simple.litmus,1 -litmus/VULKAN/CADP/3_threads_3_instructions/11_simple.litmus,1 -litmus/VULKAN/CADP/3_threads_3_instructions/18_simple.litmus,1 -litmus/VULKAN/CADP/3_threads_3_instructions/19_simple.litmus,1 -litmus/VULKAN/CADP/3_threads_3_instructions/20_simple.litmus,1 -litmus/VULKAN/CADP/3_threads_4_instructions/0_simple.litmus,1 -litmus/VULKAN/CADP/3_threads_4_instructions/1_simple.litmus,1 -litmus/VULKAN/CADP/3_threads_4_instructions/2_simple.litmus,1 -litmus/VULKAN/CADP/3_threads_4_instructions/3_simple.litmus,1 -litmus/VULKAN/CADP/3_threads_4_instructions/4_simple.litmus,1 -litmus/VULKAN/CADP/3_threads_4_instructions/5_simple.litmus,1 -litmus/VULKAN/CADP/3_threads_4_instructions/6_simple.litmus,1 -litmus/VULKAN/CADP/3_threads_4_instructions/7_simple.litmus,1 -litmus/VULKAN/CADP/3_threads_4_instructions/8_simple.litmus,1 -litmus/VULKAN/CADP/3_threads_4_instructions/9_simple.litmus,1 -litmus/VULKAN/CADP/3_threads_4_instructions/10_simple.litmus,1 -litmus/VULKAN/CADP/3_threads_4_instructions/11_simple.litmus,1 -litmus/VULKAN/CADP/3_threads_4_instructions/87_simple.litmus,1 -litmus/VULKAN/CADP/3_threads_4_instructions/88_simple.litmus,1 -litmus/VULKAN/CADP/3_threads_4_instructions/89_simple.litmus,1 -litmus/VULKAN/CADP/3_threads_4_instructions/90_simple.litmus,1 -litmus/VULKAN/CADP/3_threads_4_instructions/91_simple.litmus,1 -litmus/VULKAN/CADP/3_threads_4_instructions/92_simple.litmus,1 -litmus/VULKAN/CADP/3_threads_4_instructions/99_simple.litmus,1 -litmus/VULKAN/CADP/3_threads_4_instructions/100_simple.litmus,1 -litmus/VULKAN/CADP/3_threads_4_instructions/101_simple.litmus,1 -litmus/VULKAN/CADP/3_threads_4_instructions/102_simple.litmus,1 -litmus/VULKAN/CADP/3_threads_4_instructions/103_simple.litmus,1 -litmus/VULKAN/CADP/3_threads_4_instructions/104_simple.litmus,1 -litmus/VULKAN/Manual/XF-Barrier-relacq.litmus,1 -litmus/VULKAN/Manual/XF-Barrier-rlx.litmus,1 -litmus/VULKAN/Manual/XF-Barrier-weak.litmus,0 -litmus/VULKAN/Manual/bar-1.litmus,1 -litmus/VULKAN/Manual/bar-2.litmus,0 -litmus/VULKAN/Manual/bar-3.litmus,1 -litmus/VULKAN/Manual/bar-4.litmus,0 \ No newline at end of file diff --git a/dartagnan/src/test/resources/dartagnan-skip.csv b/dartagnan/src/test/resources/dartagnan-skip.csv index a1b21dc1cb..a4b02df930 100644 --- a/dartagnan/src/test/resources/dartagnan-skip.csv +++ b/dartagnan/src/test/resources/dartagnan-skip.csv @@ -176,17 +176,418 @@ litmus/PTX/Liveness/2_threads_4_instructions/134_simple.litmus litmus/PTX/Liveness/2_threads_4_instructions/135_simple.litmus litmus/PTX/Liveness/2_threads_4_instructions/144_simple.litmus litmus/PTX/Liveness/2_threads_4_instructions/145_simple.litmus -litmus/VULKAN/Liveness/2_threads_4_instructions/62_simple.litmus -litmus/VULKAN/Liveness/2_threads_4_instructions/63_simple.litmus -litmus/VULKAN/Liveness/2_threads_4_instructions/100_simple.litmus -litmus/VULKAN/Liveness/2_threads_4_instructions/101_simple.litmus -litmus/VULKAN/Liveness/2_threads_4_instructions/128_simple.litmus -litmus/VULKAN/Liveness/2_threads_4_instructions/129_simple.litmus -litmus/VULKAN/Liveness/2_threads_4_instructions/130_simple.litmus -litmus/VULKAN/Liveness/2_threads_4_instructions/131_simple.litmus -litmus/VULKAN/Liveness/2_threads_4_instructions/132_simple.litmus -litmus/VULKAN/Liveness/2_threads_4_instructions/133_simple.litmus -litmus/VULKAN/Liveness/2_threads_4_instructions/134_simple.litmus -litmus/VULKAN/Liveness/2_threads_4_instructions/135_simple.litmus -litmus/VULKAN/Liveness/2_threads_4_instructions/144_simple.litmus -litmus/VULKAN/Liveness/2_threads_4_instructions/145_simple.litmus \ No newline at end of file +litmus/VULKAN/CADP/2_threads_2_instructions/0_simple.litmus +litmus/VULKAN/CADP/2_threads_2_instructions/1_simple.litmus +litmus/VULKAN/CADP/2_threads_2_instructions/2_simple.litmus +litmus/VULKAN/CADP/2_threads_2_instructions/3_simple.litmus +litmus/VULKAN/CADP/2_threads_2_instructions/6_simple.litmus +litmus/VULKAN/CADP/2_threads_2_instructions/7_simple.litmus +litmus/VULKAN/CADP/2_threads_3_instructions/0_simple.litmus +litmus/VULKAN/CADP/2_threads_3_instructions/100_simple.litmus +litmus/VULKAN/CADP/2_threads_3_instructions/101_simple.litmus +litmus/VULKAN/CADP/2_threads_3_instructions/102_simple.litmus +litmus/VULKAN/CADP/2_threads_3_instructions/103_simple.litmus +litmus/VULKAN/CADP/2_threads_3_instructions/104_simple.litmus +litmus/VULKAN/CADP/2_threads_3_instructions/105_simple.litmus +litmus/VULKAN/CADP/2_threads_3_instructions/106_simple.litmus +litmus/VULKAN/CADP/2_threads_3_instructions/107_simple.litmus +litmus/VULKAN/CADP/2_threads_3_instructions/108_simple.litmus +litmus/VULKAN/CADP/2_threads_3_instructions/109_simple.litmus +litmus/VULKAN/CADP/2_threads_3_instructions/110_simple.litmus +litmus/VULKAN/CADP/2_threads_3_instructions/111_simple.litmus +litmus/VULKAN/CADP/2_threads_3_instructions/112_simple.litmus +litmus/VULKAN/CADP/2_threads_3_instructions/113_simple.litmus +litmus/VULKAN/CADP/2_threads_3_instructions/114_simple.litmus +litmus/VULKAN/CADP/2_threads_3_instructions/115_simple.litmus +litmus/VULKAN/CADP/2_threads_3_instructions/116_simple.litmus +litmus/VULKAN/CADP/2_threads_3_instructions/117_simple.litmus +litmus/VULKAN/CADP/2_threads_3_instructions/118_simple.litmus +litmus/VULKAN/CADP/2_threads_3_instructions/119_simple.litmus +litmus/VULKAN/CADP/2_threads_3_instructions/11_simple.litmus +litmus/VULKAN/CADP/2_threads_3_instructions/120_simple.litmus +litmus/VULKAN/CADP/2_threads_3_instructions/121_simple.litmus +litmus/VULKAN/CADP/2_threads_3_instructions/122_simple.litmus +litmus/VULKAN/CADP/2_threads_3_instructions/123_simple.litmus +litmus/VULKAN/CADP/2_threads_3_instructions/124_simple.litmus +litmus/VULKAN/CADP/2_threads_3_instructions/125_simple.litmus +litmus/VULKAN/CADP/2_threads_3_instructions/126_simple.litmus +litmus/VULKAN/CADP/2_threads_3_instructions/127_simple.litmus +litmus/VULKAN/CADP/2_threads_3_instructions/128_simple.litmus +litmus/VULKAN/CADP/2_threads_3_instructions/129_simple.litmus +litmus/VULKAN/CADP/2_threads_3_instructions/12_simple.litmus +litmus/VULKAN/CADP/2_threads_3_instructions/130_simple.litmus +litmus/VULKAN/CADP/2_threads_3_instructions/131_simple.litmus +litmus/VULKAN/CADP/2_threads_3_instructions/132_simple.litmus +litmus/VULKAN/CADP/2_threads_3_instructions/133_simple.litmus +litmus/VULKAN/CADP/2_threads_3_instructions/134_simple.litmus +litmus/VULKAN/CADP/2_threads_3_instructions/135_simple.litmus +litmus/VULKAN/CADP/2_threads_3_instructions/136_simple.litmus +litmus/VULKAN/CADP/2_threads_3_instructions/137_simple.litmus +litmus/VULKAN/CADP/2_threads_3_instructions/138_simple.litmus +litmus/VULKAN/CADP/2_threads_3_instructions/139_simple.litmus +litmus/VULKAN/CADP/2_threads_3_instructions/13_simple.litmus +litmus/VULKAN/CADP/2_threads_3_instructions/140_simple.litmus +litmus/VULKAN/CADP/2_threads_3_instructions/141_simple.litmus +litmus/VULKAN/CADP/2_threads_3_instructions/142_simple.litmus +litmus/VULKAN/CADP/2_threads_3_instructions/143_simple.litmus +litmus/VULKAN/CADP/2_threads_3_instructions/144_simple.litmus +litmus/VULKAN/CADP/2_threads_3_instructions/145_simple.litmus +litmus/VULKAN/CADP/2_threads_3_instructions/146_simple.litmus +litmus/VULKAN/CADP/2_threads_3_instructions/147_simple.litmus +litmus/VULKAN/CADP/2_threads_3_instructions/148_simple.litmus +litmus/VULKAN/CADP/2_threads_3_instructions/149_simple.litmus +litmus/VULKAN/CADP/2_threads_3_instructions/150_simple.litmus +litmus/VULKAN/CADP/2_threads_3_instructions/151_simple.litmus +litmus/VULKAN/CADP/2_threads_3_instructions/152_simple.litmus +litmus/VULKAN/CADP/2_threads_3_instructions/153_simple.litmus +litmus/VULKAN/CADP/2_threads_3_instructions/154_simple.litmus +litmus/VULKAN/CADP/2_threads_3_instructions/155_simple.litmus +litmus/VULKAN/CADP/2_threads_3_instructions/156_simple.litmus +litmus/VULKAN/CADP/2_threads_3_instructions/157_simple.litmus +litmus/VULKAN/CADP/2_threads_3_instructions/158_simple.litmus +litmus/VULKAN/CADP/2_threads_3_instructions/159_simple.litmus +litmus/VULKAN/CADP/2_threads_3_instructions/15_simple.litmus +litmus/VULKAN/CADP/2_threads_3_instructions/160_simple.litmus +litmus/VULKAN/CADP/2_threads_3_instructions/161_simple.litmus +litmus/VULKAN/CADP/2_threads_3_instructions/162_simple.litmus +litmus/VULKAN/CADP/2_threads_3_instructions/163_simple.litmus +litmus/VULKAN/CADP/2_threads_3_instructions/164_simple.litmus +litmus/VULKAN/CADP/2_threads_3_instructions/165_simple.litmus +litmus/VULKAN/CADP/2_threads_3_instructions/166_simple.litmus +litmus/VULKAN/CADP/2_threads_3_instructions/167_simple.litmus +litmus/VULKAN/CADP/2_threads_3_instructions/168_simple.litmus +litmus/VULKAN/CADP/2_threads_3_instructions/169_simple.litmus +litmus/VULKAN/CADP/2_threads_3_instructions/16_simple.litmus +litmus/VULKAN/CADP/2_threads_3_instructions/170_simple.litmus +litmus/VULKAN/CADP/2_threads_3_instructions/171_simple.litmus +litmus/VULKAN/CADP/2_threads_3_instructions/172_simple.litmus +litmus/VULKAN/CADP/2_threads_3_instructions/173_simple.litmus +litmus/VULKAN/CADP/2_threads_3_instructions/174_simple.litmus +litmus/VULKAN/CADP/2_threads_3_instructions/175_simple.litmus +litmus/VULKAN/CADP/2_threads_3_instructions/17_simple.litmus +litmus/VULKAN/CADP/2_threads_3_instructions/18_simple.litmus +litmus/VULKAN/CADP/2_threads_3_instructions/1_simple.litmus +litmus/VULKAN/CADP/2_threads_3_instructions/20_simple.litmus +litmus/VULKAN/CADP/2_threads_3_instructions/21_simple.litmus +litmus/VULKAN/CADP/2_threads_3_instructions/23_simple.litmus +litmus/VULKAN/CADP/2_threads_3_instructions/24_simple.litmus +litmus/VULKAN/CADP/2_threads_3_instructions/26_simple.litmus +litmus/VULKAN/CADP/2_threads_3_instructions/27_simple.litmus +litmus/VULKAN/CADP/2_threads_3_instructions/28_simple.litmus +litmus/VULKAN/CADP/2_threads_3_instructions/29_simple.litmus +litmus/VULKAN/CADP/2_threads_3_instructions/2_simple.litmus +litmus/VULKAN/CADP/2_threads_3_instructions/31_simple.litmus +litmus/VULKAN/CADP/2_threads_3_instructions/32_simple.litmus +litmus/VULKAN/CADP/2_threads_3_instructions/33_simple.litmus +litmus/VULKAN/CADP/2_threads_3_instructions/34_simple.litmus +litmus/VULKAN/CADP/2_threads_3_instructions/35_simple.litmus +litmus/VULKAN/CADP/2_threads_3_instructions/36_simple.litmus +litmus/VULKAN/CADP/2_threads_3_instructions/37_simple.litmus +litmus/VULKAN/CADP/2_threads_3_instructions/38_simple.litmus +litmus/VULKAN/CADP/2_threads_3_instructions/39_simple.litmus +litmus/VULKAN/CADP/2_threads_3_instructions/3_simple.litmus +litmus/VULKAN/CADP/2_threads_3_instructions/40_simple.litmus +litmus/VULKAN/CADP/2_threads_3_instructions/41_simple.litmus +litmus/VULKAN/CADP/2_threads_3_instructions/42_simple.litmus +litmus/VULKAN/CADP/2_threads_3_instructions/43_simple.litmus +litmus/VULKAN/CADP/2_threads_3_instructions/44_simple.litmus +litmus/VULKAN/CADP/2_threads_3_instructions/45_simple.litmus +litmus/VULKAN/CADP/2_threads_3_instructions/47_simple.litmus +litmus/VULKAN/CADP/2_threads_3_instructions/48_simple.litmus +litmus/VULKAN/CADP/2_threads_3_instructions/49_simple.litmus +litmus/VULKAN/CADP/2_threads_3_instructions/51_simple.litmus +litmus/VULKAN/CADP/2_threads_3_instructions/52_simple.litmus +litmus/VULKAN/CADP/2_threads_3_instructions/53_simple.litmus +litmus/VULKAN/CADP/2_threads_3_instructions/54_simple.litmus +litmus/VULKAN/CADP/2_threads_3_instructions/55_simple.litmus +litmus/VULKAN/CADP/2_threads_3_instructions/56_simple.litmus +litmus/VULKAN/CADP/2_threads_3_instructions/57_simple.litmus +litmus/VULKAN/CADP/2_threads_3_instructions/59_simple.litmus +litmus/VULKAN/CADP/2_threads_3_instructions/5_simple.litmus +litmus/VULKAN/CADP/2_threads_3_instructions/60_simple.litmus +litmus/VULKAN/CADP/2_threads_3_instructions/61_simple.litmus +litmus/VULKAN/CADP/2_threads_3_instructions/62_simple.litmus +litmus/VULKAN/CADP/2_threads_3_instructions/63_simple.litmus +litmus/VULKAN/CADP/2_threads_3_instructions/64_simple.litmus +litmus/VULKAN/CADP/2_threads_3_instructions/65_simple.litmus +litmus/VULKAN/CADP/2_threads_3_instructions/66_simple.litmus +litmus/VULKAN/CADP/2_threads_3_instructions/67_simple.litmus +litmus/VULKAN/CADP/2_threads_3_instructions/68_simple.litmus +litmus/VULKAN/CADP/2_threads_3_instructions/69_simple.litmus +litmus/VULKAN/CADP/2_threads_3_instructions/6_simple.litmus +litmus/VULKAN/CADP/2_threads_3_instructions/70_simple.litmus +litmus/VULKAN/CADP/2_threads_3_instructions/71_simple.litmus +litmus/VULKAN/CADP/2_threads_3_instructions/72_simple.litmus +litmus/VULKAN/CADP/2_threads_3_instructions/73_simple.litmus +litmus/VULKAN/CADP/2_threads_3_instructions/74_simple.litmus +litmus/VULKAN/CADP/2_threads_3_instructions/75_simple.litmus +litmus/VULKAN/CADP/2_threads_3_instructions/76_simple.litmus +litmus/VULKAN/CADP/2_threads_3_instructions/77_simple.litmus +litmus/VULKAN/CADP/2_threads_3_instructions/78_simple.litmus +litmus/VULKAN/CADP/2_threads_3_instructions/79_simple.litmus +litmus/VULKAN/CADP/2_threads_3_instructions/7_simple.litmus +litmus/VULKAN/CADP/2_threads_3_instructions/80_simple.litmus +litmus/VULKAN/CADP/2_threads_3_instructions/81_simple.litmus +litmus/VULKAN/CADP/2_threads_3_instructions/82_simple.litmus +litmus/VULKAN/CADP/2_threads_3_instructions/83_simple.litmus +litmus/VULKAN/CADP/2_threads_3_instructions/84_simple.litmus +litmus/VULKAN/CADP/2_threads_3_instructions/85_simple.litmus +litmus/VULKAN/CADP/2_threads_3_instructions/86_simple.litmus +litmus/VULKAN/CADP/2_threads_3_instructions/87_simple.litmus +litmus/VULKAN/CADP/2_threads_3_instructions/88_simple.litmus +litmus/VULKAN/CADP/2_threads_3_instructions/89_simple.litmus +litmus/VULKAN/CADP/2_threads_3_instructions/8_simple.litmus +litmus/VULKAN/CADP/2_threads_3_instructions/90_simple.litmus +litmus/VULKAN/CADP/2_threads_3_instructions/91_simple.litmus +litmus/VULKAN/CADP/2_threads_3_instructions/92_simple.litmus +litmus/VULKAN/CADP/2_threads_3_instructions/93_simple.litmus +litmus/VULKAN/CADP/2_threads_3_instructions/94_simple.litmus +litmus/VULKAN/CADP/2_threads_3_instructions/95_simple.litmus +litmus/VULKAN/CADP/2_threads_3_instructions/96_simple.litmus +litmus/VULKAN/CADP/2_threads_3_instructions/97_simple.litmus +litmus/VULKAN/CADP/2_threads_3_instructions/98_simple.litmus +litmus/VULKAN/CADP/2_threads_3_instructions/99_simple.litmus +litmus/VULKAN/CADP/2_threads_3_instructions/9_simple.litmus +litmus/VULKAN/CADP/2_threads_4_instructions/0_simple.litmus +litmus/VULKAN/CADP/2_threads_4_instructions/100_simple.litmus +litmus/VULKAN/CADP/2_threads_4_instructions/101_simple.litmus +litmus/VULKAN/CADP/2_threads_4_instructions/104_simple.litmus +litmus/VULKAN/CADP/2_threads_4_instructions/105_simple.litmus +litmus/VULKAN/CADP/2_threads_4_instructions/106_simple.litmus +litmus/VULKAN/CADP/2_threads_4_instructions/107_simple.litmus +litmus/VULKAN/CADP/2_threads_4_instructions/108_simple.litmus +litmus/VULKAN/CADP/2_threads_4_instructions/109_simple.litmus +litmus/VULKAN/CADP/2_threads_4_instructions/10_simple.litmus +litmus/VULKAN/CADP/2_threads_4_instructions/110_simple.litmus +litmus/VULKAN/CADP/2_threads_4_instructions/111_simple.litmus +litmus/VULKAN/CADP/2_threads_4_instructions/112_simple.litmus +litmus/VULKAN/CADP/2_threads_4_instructions/113_simple.litmus +litmus/VULKAN/CADP/2_threads_4_instructions/114_simple.litmus +litmus/VULKAN/CADP/2_threads_4_instructions/115_simple.litmus +litmus/VULKAN/CADP/2_threads_4_instructions/116_simple.litmus +litmus/VULKAN/CADP/2_threads_4_instructions/117_simple.litmus +litmus/VULKAN/CADP/2_threads_4_instructions/118_simple.litmus +litmus/VULKAN/CADP/2_threads_4_instructions/119_simple.litmus +litmus/VULKAN/CADP/2_threads_4_instructions/11_simple.litmus +litmus/VULKAN/CADP/2_threads_4_instructions/122_simple.litmus +litmus/VULKAN/CADP/2_threads_4_instructions/123_simple.litmus +litmus/VULKAN/CADP/2_threads_4_instructions/128_simple.litmus +litmus/VULKAN/CADP/2_threads_4_instructions/129_simple.litmus +litmus/VULKAN/CADP/2_threads_4_instructions/12_simple.litmus +litmus/VULKAN/CADP/2_threads_4_instructions/130_simple.litmus +litmus/VULKAN/CADP/2_threads_4_instructions/131_simple.litmus +litmus/VULKAN/CADP/2_threads_4_instructions/134_simple.litmus +litmus/VULKAN/CADP/2_threads_4_instructions/135_simple.litmus +litmus/VULKAN/CADP/2_threads_4_instructions/13_simple.litmus +litmus/VULKAN/CADP/2_threads_4_instructions/140_simple.litmus +litmus/VULKAN/CADP/2_threads_4_instructions/141_simple.litmus +litmus/VULKAN/CADP/2_threads_4_instructions/142_simple.litmus +litmus/VULKAN/CADP/2_threads_4_instructions/143_simple.litmus +litmus/VULKAN/CADP/2_threads_4_instructions/146_simple.litmus +litmus/VULKAN/CADP/2_threads_4_instructions/147_simple.litmus +litmus/VULKAN/CADP/2_threads_4_instructions/148_simple.litmus +litmus/VULKAN/CADP/2_threads_4_instructions/149_simple.litmus +litmus/VULKAN/CADP/2_threads_4_instructions/14_simple.litmus +litmus/VULKAN/CADP/2_threads_4_instructions/150_simple.litmus +litmus/VULKAN/CADP/2_threads_4_instructions/151_simple.litmus +litmus/VULKAN/CADP/2_threads_4_instructions/152_simple.litmus +litmus/VULKAN/CADP/2_threads_4_instructions/153_simple.litmus +litmus/VULKAN/CADP/2_threads_4_instructions/154_simple.litmus +litmus/VULKAN/CADP/2_threads_4_instructions/155_simple.litmus +litmus/VULKAN/CADP/2_threads_4_instructions/156_simple.litmus +litmus/VULKAN/CADP/2_threads_4_instructions/157_simple.litmus +litmus/VULKAN/CADP/2_threads_4_instructions/158_simple.litmus +litmus/VULKAN/CADP/2_threads_4_instructions/159_simple.litmus +litmus/VULKAN/CADP/2_threads_4_instructions/15_simple.litmus +litmus/VULKAN/CADP/2_threads_4_instructions/160_simple.litmus +litmus/VULKAN/CADP/2_threads_4_instructions/161_simple.litmus +litmus/VULKAN/CADP/2_threads_4_instructions/162_simple.litmus +litmus/VULKAN/CADP/2_threads_4_instructions/163_simple.litmus +litmus/VULKAN/CADP/2_threads_4_instructions/164_simple.litmus +litmus/VULKAN/CADP/2_threads_4_instructions/165_simple.litmus +litmus/VULKAN/CADP/2_threads_4_instructions/166_simple.litmus +litmus/VULKAN/CADP/2_threads_4_instructions/167_simple.litmus +litmus/VULKAN/CADP/2_threads_4_instructions/168_simple.litmus +litmus/VULKAN/CADP/2_threads_4_instructions/169_simple.litmus +litmus/VULKAN/CADP/2_threads_4_instructions/16_simple.litmus +litmus/VULKAN/CADP/2_threads_4_instructions/170_simple.litmus +litmus/VULKAN/CADP/2_threads_4_instructions/171_simple.litmus +litmus/VULKAN/CADP/2_threads_4_instructions/172_simple.litmus +litmus/VULKAN/CADP/2_threads_4_instructions/17_simple.litmus +litmus/VULKAN/CADP/2_threads_4_instructions/18_simple.litmus +litmus/VULKAN/CADP/2_threads_4_instructions/19_simple.litmus +litmus/VULKAN/CADP/2_threads_4_instructions/1_simple.litmus +litmus/VULKAN/CADP/2_threads_4_instructions/20_simple.litmus +litmus/VULKAN/CADP/2_threads_4_instructions/21_simple.litmus +litmus/VULKAN/CADP/2_threads_4_instructions/22_simple.litmus +litmus/VULKAN/CADP/2_threads_4_instructions/23_simple.litmus +litmus/VULKAN/CADP/2_threads_4_instructions/24_simple.litmus +litmus/VULKAN/CADP/2_threads_4_instructions/25_simple.litmus +litmus/VULKAN/CADP/2_threads_4_instructions/26_simple.litmus +litmus/VULKAN/CADP/2_threads_4_instructions/27_simple.litmus +litmus/VULKAN/CADP/2_threads_4_instructions/28_simple.litmus +litmus/VULKAN/CADP/2_threads_4_instructions/29_simple.litmus +litmus/VULKAN/CADP/2_threads_4_instructions/2_simple.litmus +litmus/VULKAN/CADP/2_threads_4_instructions/32_simple.litmus +litmus/VULKAN/CADP/2_threads_4_instructions/33_simple.litmus +litmus/VULKAN/CADP/2_threads_4_instructions/34_simple.litmus +litmus/VULKAN/CADP/2_threads_4_instructions/35_simple.litmus +litmus/VULKAN/CADP/2_threads_4_instructions/36_simple.litmus +litmus/VULKAN/CADP/2_threads_4_instructions/37_simple.litmus +litmus/VULKAN/CADP/2_threads_4_instructions/38_simple.litmus +litmus/VULKAN/CADP/2_threads_4_instructions/39_simple.litmus +litmus/VULKAN/CADP/2_threads_4_instructions/3_simple.litmus +litmus/VULKAN/CADP/2_threads_4_instructions/40_simple.litmus +litmus/VULKAN/CADP/2_threads_4_instructions/41_simple.litmus +litmus/VULKAN/CADP/2_threads_4_instructions/42_simple.litmus +litmus/VULKAN/CADP/2_threads_4_instructions/43_simple.litmus +litmus/VULKAN/CADP/2_threads_4_instructions/44_simple.litmus +litmus/VULKAN/CADP/2_threads_4_instructions/45_simple.litmus +litmus/VULKAN/CADP/2_threads_4_instructions/4_simple.litmus +litmus/VULKAN/CADP/2_threads_4_instructions/50_simple.litmus +litmus/VULKAN/CADP/2_threads_4_instructions/51_simple.litmus +litmus/VULKAN/CADP/2_threads_4_instructions/52_simple.litmus +litmus/VULKAN/CADP/2_threads_4_instructions/53_simple.litmus +litmus/VULKAN/CADP/2_threads_4_instructions/54_simple.litmus +litmus/VULKAN/CADP/2_threads_4_instructions/55_simple.litmus +litmus/VULKAN/CADP/2_threads_4_instructions/56_simple.litmus +litmus/VULKAN/CADP/2_threads_4_instructions/57_simple.litmus +litmus/VULKAN/CADP/2_threads_4_instructions/58_simple.litmus +litmus/VULKAN/CADP/2_threads_4_instructions/59_simple.litmus +litmus/VULKAN/CADP/2_threads_4_instructions/5_simple.litmus +litmus/VULKAN/CADP/2_threads_4_instructions/60_simple.litmus +litmus/VULKAN/CADP/2_threads_4_instructions/61_simple.litmus +litmus/VULKAN/CADP/2_threads_4_instructions/64_simple.litmus +litmus/VULKAN/CADP/2_threads_4_instructions/65_simple.litmus +litmus/VULKAN/CADP/2_threads_4_instructions/6_simple.litmus +litmus/VULKAN/CADP/2_threads_4_instructions/70_simple.litmus +litmus/VULKAN/CADP/2_threads_4_instructions/71_simple.litmus +litmus/VULKAN/CADP/2_threads_4_instructions/72_simple.litmus +litmus/VULKAN/CADP/2_threads_4_instructions/73_simple.litmus +litmus/VULKAN/CADP/2_threads_4_instructions/78_simple.litmus +litmus/VULKAN/CADP/2_threads_4_instructions/79_simple.litmus +litmus/VULKAN/CADP/2_threads_4_instructions/7_simple.litmus +litmus/VULKAN/CADP/2_threads_4_instructions/80_simple.litmus +litmus/VULKAN/CADP/2_threads_4_instructions/81_simple.litmus +litmus/VULKAN/CADP/2_threads_4_instructions/82_simple.litmus +litmus/VULKAN/CADP/2_threads_4_instructions/83_simple.litmus +litmus/VULKAN/CADP/2_threads_4_instructions/84_simple.litmus +litmus/VULKAN/CADP/2_threads_4_instructions/85_simple.litmus +litmus/VULKAN/CADP/2_threads_4_instructions/86_simple.litmus +litmus/VULKAN/CADP/2_threads_4_instructions/87_simple.litmus +litmus/VULKAN/CADP/2_threads_4_instructions/88_simple.litmus +litmus/VULKAN/CADP/2_threads_4_instructions/89_simple.litmus +litmus/VULKAN/CADP/2_threads_4_instructions/8_simple.litmus +litmus/VULKAN/CADP/2_threads_4_instructions/90_simple.litmus +litmus/VULKAN/CADP/2_threads_4_instructions/91_simple.litmus +litmus/VULKAN/CADP/2_threads_4_instructions/92_simple.litmus +litmus/VULKAN/CADP/2_threads_4_instructions/93_simple.litmus +litmus/VULKAN/CADP/2_threads_4_instructions/94_simple.litmus +litmus/VULKAN/CADP/2_threads_4_instructions/95_simple.litmus +litmus/VULKAN/CADP/2_threads_4_instructions/98_simple.litmus +litmus/VULKAN/CADP/2_threads_4_instructions/99_simple.litmus +litmus/VULKAN/CADP/2_threads_4_instructions/9_simple.litmus +litmus/VULKAN/CADP/3_threads_3_instructions/0_simple.litmus +litmus/VULKAN/CADP/3_threads_3_instructions/12_simple.litmus +litmus/VULKAN/CADP/3_threads_3_instructions/13_simple.litmus +litmus/VULKAN/CADP/3_threads_3_instructions/14_simple.litmus +litmus/VULKAN/CADP/3_threads_3_instructions/15_simple.litmus +litmus/VULKAN/CADP/3_threads_3_instructions/16_simple.litmus +litmus/VULKAN/CADP/3_threads_3_instructions/17_simple.litmus +litmus/VULKAN/CADP/3_threads_3_instructions/1_simple.litmus +litmus/VULKAN/CADP/3_threads_3_instructions/2_simple.litmus +litmus/VULKAN/CADP/3_threads_3_instructions/3_simple.litmus +litmus/VULKAN/CADP/3_threads_3_instructions/4_simple.litmus +litmus/VULKAN/CADP/3_threads_3_instructions/5_simple.litmus +litmus/VULKAN/CADP/3_threads_3_instructions/6_simple.litmus +litmus/VULKAN/CADP/3_threads_3_instructions/7_simple.litmus +litmus/VULKAN/CADP/3_threads_3_instructions/8_simple.litmus +litmus/VULKAN/CADP/3_threads_4_instructions/12_simple.litmus +litmus/VULKAN/CADP/3_threads_4_instructions/13_simple.litmus +litmus/VULKAN/CADP/3_threads_4_instructions/14_simple.litmus +litmus/VULKAN/CADP/3_threads_4_instructions/15_simple.litmus +litmus/VULKAN/CADP/3_threads_4_instructions/16_simple.litmus +litmus/VULKAN/CADP/3_threads_4_instructions/17_simple.litmus +litmus/VULKAN/CADP/3_threads_4_instructions/18_simple.litmus +litmus/VULKAN/CADP/3_threads_4_instructions/19_simple.litmus +litmus/VULKAN/CADP/3_threads_4_instructions/20_simple.litmus +litmus/VULKAN/CADP/3_threads_4_instructions/21_simple.litmus +litmus/VULKAN/CADP/3_threads_4_instructions/22_simple.litmus +litmus/VULKAN/CADP/3_threads_4_instructions/23_simple.litmus +litmus/VULKAN/CADP/3_threads_4_instructions/24_simple.litmus +litmus/VULKAN/CADP/3_threads_4_instructions/25_simple.litmus +litmus/VULKAN/CADP/3_threads_4_instructions/26_simple.litmus +litmus/VULKAN/CADP/3_threads_4_instructions/27_simple.litmus +litmus/VULKAN/CADP/3_threads_4_instructions/28_simple.litmus +litmus/VULKAN/CADP/3_threads_4_instructions/29_simple.litmus +litmus/VULKAN/CADP/3_threads_4_instructions/30_simple.litmus +litmus/VULKAN/CADP/3_threads_4_instructions/31_simple.litmus +litmus/VULKAN/CADP/3_threads_4_instructions/32_simple.litmus +litmus/VULKAN/CADP/3_threads_4_instructions/33_simple.litmus +litmus/VULKAN/CADP/3_threads_4_instructions/34_simple.litmus +litmus/VULKAN/CADP/3_threads_4_instructions/35_simple.litmus +litmus/VULKAN/CADP/3_threads_4_instructions/36_simple.litmus +litmus/VULKAN/CADP/3_threads_4_instructions/37_simple.litmus +litmus/VULKAN/CADP/3_threads_4_instructions/38_simple.litmus +litmus/VULKAN/CADP/3_threads_4_instructions/39_simple.litmus +litmus/VULKAN/CADP/3_threads_4_instructions/40_simple.litmus +litmus/VULKAN/CADP/3_threads_4_instructions/41_simple.litmus +litmus/VULKAN/CADP/3_threads_4_instructions/42_simple.litmus +litmus/VULKAN/CADP/3_threads_4_instructions/43_simple.litmus +litmus/VULKAN/CADP/3_threads_4_instructions/44_simple.litmus +litmus/VULKAN/CADP/3_threads_4_instructions/45_simple.litmus +litmus/VULKAN/CADP/3_threads_4_instructions/46_simple.litmus +litmus/VULKAN/CADP/3_threads_4_instructions/47_simple.litmus +litmus/VULKAN/CADP/3_threads_4_instructions/48_simple.litmus +litmus/VULKAN/CADP/3_threads_4_instructions/49_simple.litmus +litmus/VULKAN/CADP/3_threads_4_instructions/50_simple.litmus +litmus/VULKAN/CADP/3_threads_4_instructions/51_simple.litmus +litmus/VULKAN/CADP/3_threads_4_instructions/52_simple.litmus +litmus/VULKAN/CADP/3_threads_4_instructions/53_simple.litmus +litmus/VULKAN/CADP/3_threads_4_instructions/54_simple.litmus +litmus/VULKAN/CADP/3_threads_4_instructions/55_simple.litmus +litmus/VULKAN/CADP/3_threads_4_instructions/56_simple.litmus +litmus/VULKAN/CADP/3_threads_4_instructions/57_simple.litmus +litmus/VULKAN/CADP/3_threads_4_instructions/58_simple.litmus +litmus/VULKAN/CADP/3_threads_4_instructions/59_simple.litmus +litmus/VULKAN/CADP/3_threads_4_instructions/60_simple.litmus +litmus/VULKAN/CADP/3_threads_4_instructions/61_simple.litmus +litmus/VULKAN/CADP/3_threads_4_instructions/62_simple.litmus +litmus/VULKAN/CADP/3_threads_4_instructions/63_simple.litmus +litmus/VULKAN/CADP/3_threads_4_instructions/64_simple.litmus +litmus/VULKAN/CADP/3_threads_4_instructions/65_simple.litmus +litmus/VULKAN/CADP/3_threads_4_instructions/66_simple.litmus +litmus/VULKAN/CADP/3_threads_4_instructions/67_simple.litmus +litmus/VULKAN/CADP/3_threads_4_instructions/68_simple.litmus +litmus/VULKAN/CADP/3_threads_4_instructions/69_simple.litmus +litmus/VULKAN/CADP/3_threads_4_instructions/70_simple.litmus +litmus/VULKAN/CADP/3_threads_4_instructions/71_simple.litmus +litmus/VULKAN/CADP/3_threads_4_instructions/72_simple.litmus +litmus/VULKAN/CADP/3_threads_4_instructions/73_simple.litmus +litmus/VULKAN/CADP/3_threads_4_instructions/74_simple.litmus +litmus/VULKAN/CADP/3_threads_4_instructions/75_simple.litmus +litmus/VULKAN/CADP/3_threads_4_instructions/76_simple.litmus +litmus/VULKAN/CADP/3_threads_4_instructions/77_simple.litmus +litmus/VULKAN/CADP/3_threads_4_instructions/78_simple.litmus +litmus/VULKAN/CADP/3_threads_4_instructions/79_simple.litmus +litmus/VULKAN/CADP/3_threads_4_instructions/80_simple.litmus +litmus/VULKAN/CADP/3_threads_4_instructions/81_simple.litmus +litmus/VULKAN/CADP/3_threads_4_instructions/82_simple.litmus +litmus/VULKAN/CADP/3_threads_4_instructions/83_simple.litmus +litmus/VULKAN/CADP/3_threads_4_instructions/84_simple.litmus +litmus/VULKAN/CADP/3_threads_4_instructions/85_simple.litmus +litmus/VULKAN/CADP/3_threads_4_instructions/86_simple.litmus +litmus/VULKAN/CADP/3_threads_4_instructions/93_simple.litmus +litmus/VULKAN/CADP/3_threads_4_instructions/94_simple.litmus +litmus/VULKAN/CADP/3_threads_4_instructions/95_simple.litmus +litmus/VULKAN/CADP/3_threads_4_instructions/96_simple.litmus +litmus/VULKAN/CADP/3_threads_4_instructions/97_simple.litmus +litmus/VULKAN/CADP/3_threads_4_instructions/98_simple.litmus + +// The following tests have loops we cannot currently normalize +litmus/VULKAN/CADP/2_threads_4_instructions/133_simple.litmus +litmus/VULKAN/CADP/2_threads_4_instructions/144_simple.litmus +litmus/VULKAN/CADP/2_threads_4_instructions/145_simple.litmus +litmus/VULKAN/CADP/2_threads_4_instructions/62_simple.litmus +litmus/VULKAN/CADP/2_threads_4_instructions/63_simple.litmus +litmus/VULKAN/CADP/2_threads_4_instructions/132_simple.litmus \ No newline at end of file diff --git a/dartagnan/src/test/resources/progress/progressFair.ll b/dartagnan/src/test/resources/progress/progressFair.ll new file mode 100644 index 0000000000..5e7bdfe0fc --- /dev/null +++ b/dartagnan/src/test/resources/progress/progressFair.ll @@ -0,0 +1,134 @@ +; ModuleID = '/Users/thomashaas/IdeaProjects/Dat3M/output/progressFair.ll' +source_filename = "/Users/thomashaas/IdeaProjects/Dat3M/benchmarks/progress/progressFair.c" +target datalayout = "e-m:o-i64:64-i128:128-n32:64-S128" +target triple = "arm64-apple-macosx14.0.0" + +%struct._opaque_pthread_t = type { i64, %struct.__darwin_pthread_handler_rec*, [8176 x i8] } +%struct.__darwin_pthread_handler_rec = type { void (i8*)*, i8*, %struct.__darwin_pthread_handler_rec* } +%struct._opaque_pthread_attr_t = type { i64, [56 x i8] } + +@x = global i32 0, align 4, !dbg !0 + +; Function Attrs: noinline nounwind ssp uwtable +define i8* @thread_1(i8* noundef %0) #0 !dbg !23 { + call void @llvm.dbg.value(metadata i8* %0, metadata !27, metadata !DIExpression()), !dbg !28 + br label %2, !dbg !29 + +2: ; preds = %2, %1 + %3 = load atomic i32, i32* @x seq_cst, align 4, !dbg !30 + %4 = icmp ne i32 %3, 1, !dbg !31 + br i1 %4, label %2, label %5, !dbg !29, !llvm.loop !32 + +5: ; preds = %2 + ret i8* null, !dbg !35 +} + +; Function Attrs: nofree nosync nounwind readnone speculatable willreturn +declare void @llvm.dbg.declare(metadata, metadata, metadata) #1 + +; Function Attrs: noinline nounwind ssp uwtable +define i8* @thread_2(i8* noundef %0) #0 !dbg !36 { + call void @llvm.dbg.value(metadata i8* %0, metadata !37, metadata !DIExpression()), !dbg !38 + store atomic i32 1, i32* @x seq_cst, align 4, !dbg !39 + ret i8* undef, !dbg !40 +} + +; Function Attrs: noinline nounwind ssp uwtable +define i32 @main() #0 !dbg !41 { + %1 = alloca %struct._opaque_pthread_t*, align 8 + %2 = alloca %struct._opaque_pthread_t*, align 8 + call void @llvm.dbg.declare(metadata %struct._opaque_pthread_t** %1, metadata !44, metadata !DIExpression()), !dbg !69 + call void @llvm.dbg.declare(metadata %struct._opaque_pthread_t** %2, metadata !70, metadata !DIExpression()), !dbg !71 + %3 = call i32 @pthread_create(%struct._opaque_pthread_t** noundef %1, %struct._opaque_pthread_attr_t* noundef null, i8* (i8*)* noundef @thread_1, i8* noundef null), !dbg !72 + %4 = call i32 @pthread_create(%struct._opaque_pthread_t** noundef %2, %struct._opaque_pthread_attr_t* noundef null, i8* (i8*)* noundef @thread_2, i8* noundef null), !dbg !73 + ret i32 0, !dbg !74 +} + +declare i32 @pthread_create(%struct._opaque_pthread_t** noundef, %struct._opaque_pthread_attr_t* noundef, i8* (i8*)* noundef, i8* noundef) #2 + +; Function Attrs: nofree nosync nounwind readnone speculatable willreturn +declare void @llvm.dbg.value(metadata, metadata, metadata) #1 + +attributes #0 = { noinline nounwind ssp uwtable "frame-pointer"="non-leaf" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="apple-m1" "target-features"="+aes,+crc,+crypto,+dotprod,+fp-armv8,+fp16fml,+fullfp16,+lse,+neon,+ras,+rcpc,+rdm,+sha2,+v8.5a,+zcm,+zcz" } +attributes #1 = { nofree nosync nounwind readnone speculatable willreturn } +attributes #2 = { "frame-pointer"="non-leaf" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="apple-m1" "target-features"="+aes,+crc,+crypto,+dotprod,+fp-armv8,+fp16fml,+fullfp16,+lse,+neon,+ras,+rcpc,+rdm,+sha2,+v8.5a,+zcm,+zcz" } + +!llvm.dbg.cu = !{!2} +!llvm.module.flags = !{!12, !13, !14, !15, !16, !17, !18, !19, !20, !21} +!llvm.ident = !{!22} + +!0 = !DIGlobalVariableExpression(var: !1, expr: !DIExpression()) +!1 = distinct !DIGlobalVariable(name: "x", scope: !2, file: !7, line: 8, type: !8, isLocal: false, isDefinition: true) +!2 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "Homebrew clang version 14.0.6", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !4, globals: !6, splitDebugInlining: false, nameTableKind: None, sysroot: "/Library/Developer/CommandLineTools/SDKs/MacOSX13.sdk", sdk: "MacOSX13.sdk") +!3 = !DIFile(filename: "/Users/thomashaas/IdeaProjects/Dat3M/benchmarks/progress/progressFair.c", directory: "/Users/thomashaas/IdeaProjects/Dat3M") +!4 = !{!5} +!5 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: null, size: 64) +!6 = !{!0} +!7 = !DIFile(filename: "benchmarks/progress/progressFair.c", directory: "/Users/thomashaas/IdeaProjects/Dat3M") +!8 = !DIDerivedType(tag: DW_TAG_typedef, name: "atomic_int", file: !9, line: 92, baseType: !10) +!9 = !DIFile(filename: "/opt/homebrew/Cellar/llvm@14/14.0.6/lib/clang/14.0.6/include/stdatomic.h", directory: "") +!10 = !DIDerivedType(tag: DW_TAG_atomic_type, baseType: !11) +!11 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) +!12 = !{i32 7, !"Dwarf Version", i32 4} +!13 = !{i32 2, !"Debug Info Version", i32 3} +!14 = !{i32 1, !"wchar_size", i32 4} +!15 = !{i32 1, !"branch-target-enforcement", i32 0} +!16 = !{i32 1, !"sign-return-address", i32 0} +!17 = !{i32 1, !"sign-return-address-all", i32 0} +!18 = !{i32 1, !"sign-return-address-with-bkey", i32 0} +!19 = !{i32 7, !"PIC Level", i32 2} +!20 = !{i32 7, !"uwtable", i32 1} +!21 = !{i32 7, !"frame-pointer", i32 1} +!22 = !{!"Homebrew clang version 14.0.6"} +!23 = distinct !DISubprogram(name: "thread_1", scope: !7, file: !7, line: 10, type: !24, scopeLine: 11, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !2, retainedNodes: !26) +!24 = !DISubroutineType(types: !25) +!25 = !{!5, !5} +!26 = !{} +!27 = !DILocalVariable(name: "unused", arg: 1, scope: !23, file: !7, line: 10, type: !5) +!28 = !DILocation(line: 0, scope: !23) +!29 = !DILocation(line: 12, column: 5, scope: !23) +!30 = !DILocation(line: 12, column: 12, scope: !23) +!31 = !DILocation(line: 12, column: 14, scope: !23) +!32 = distinct !{!32, !29, !33, !34} +!33 = !DILocation(line: 12, column: 19, scope: !23) +!34 = !{!"llvm.loop.mustprogress"} +!35 = !DILocation(line: 13, column: 5, scope: !23) +!36 = distinct !DISubprogram(name: "thread_2", scope: !7, file: !7, line: 16, type: !24, scopeLine: 17, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !2, retainedNodes: !26) +!37 = !DILocalVariable(name: "unused", arg: 1, scope: !36, file: !7, line: 16, type: !5) +!38 = !DILocation(line: 0, scope: !36) +!39 = !DILocation(line: 18, column: 7, scope: !36) +!40 = !DILocation(line: 19, column: 1, scope: !36) +!41 = distinct !DISubprogram(name: "main", scope: !7, file: !7, line: 21, type: !42, scopeLine: 22, spFlags: DISPFlagDefinition, unit: !2, retainedNodes: !26) +!42 = !DISubroutineType(types: !43) +!43 = !{!11} +!44 = !DILocalVariable(name: "t1", scope: !41, file: !7, line: 23, type: !45) +!45 = !DIDerivedType(tag: DW_TAG_typedef, name: "pthread_t", file: !46, line: 31, baseType: !47) +!46 = !DIFile(filename: "/Library/Developer/CommandLineTools/SDKs/MacOSX13.sdk/usr/include/sys/_pthread/_pthread_t.h", directory: "") +!47 = !DIDerivedType(tag: DW_TAG_typedef, name: "__darwin_pthread_t", file: !48, line: 118, baseType: !49) +!48 = !DIFile(filename: "/Library/Developer/CommandLineTools/SDKs/MacOSX13.sdk/usr/include/sys/_pthread/_pthread_types.h", directory: "") +!49 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !50, size: 64) +!50 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "_opaque_pthread_t", file: !48, line: 103, size: 65536, elements: !51) +!51 = !{!52, !54, !64} +!52 = !DIDerivedType(tag: DW_TAG_member, name: "__sig", scope: !50, file: !48, line: 104, baseType: !53, size: 64) +!53 = !DIBasicType(name: "long", size: 64, encoding: DW_ATE_signed) +!54 = !DIDerivedType(tag: DW_TAG_member, name: "__cleanup_stack", scope: !50, file: !48, line: 105, baseType: !55, size: 64, offset: 64) +!55 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !56, size: 64) +!56 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "__darwin_pthread_handler_rec", file: !48, line: 57, size: 192, elements: !57) +!57 = !{!58, !62, !63} +!58 = !DIDerivedType(tag: DW_TAG_member, name: "__routine", scope: !56, file: !48, line: 58, baseType: !59, size: 64) +!59 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !60, size: 64) +!60 = !DISubroutineType(types: !61) +!61 = !{null, !5} +!62 = !DIDerivedType(tag: DW_TAG_member, name: "__arg", scope: !56, file: !48, line: 59, baseType: !5, size: 64, offset: 64) +!63 = !DIDerivedType(tag: DW_TAG_member, name: "__next", scope: !56, file: !48, line: 60, baseType: !55, size: 64, offset: 128) +!64 = !DIDerivedType(tag: DW_TAG_member, name: "__opaque", scope: !50, file: !48, line: 106, baseType: !65, size: 65408, offset: 128) +!65 = !DICompositeType(tag: DW_TAG_array_type, baseType: !66, size: 65408, elements: !67) +!66 = !DIBasicType(name: "char", size: 8, encoding: DW_ATE_signed_char) +!67 = !{!68} +!68 = !DISubrange(count: 8176) +!69 = !DILocation(line: 23, column: 15, scope: !41) +!70 = !DILocalVariable(name: "t2", scope: !41, file: !7, line: 23, type: !45) +!71 = !DILocation(line: 23, column: 19, scope: !41) +!72 = !DILocation(line: 24, column: 5, scope: !41) +!73 = !DILocation(line: 25, column: 5, scope: !41) +!74 = !DILocation(line: 26, column: 5, scope: !41) diff --git a/dartagnan/src/test/resources/progress/progressHSA.ll b/dartagnan/src/test/resources/progress/progressHSA.ll new file mode 100644 index 0000000000..f3a2447fda --- /dev/null +++ b/dartagnan/src/test/resources/progress/progressHSA.ll @@ -0,0 +1,134 @@ +; ModuleID = '/Users/thomashaas/IdeaProjects/Dat3M/output/progressHSA.ll' +source_filename = "/Users/thomashaas/IdeaProjects/Dat3M/benchmarks/progress/progressHSA.c" +target datalayout = "e-m:o-i64:64-i128:128-n32:64-S128" +target triple = "arm64-apple-macosx14.0.0" + +%struct._opaque_pthread_t = type { i64, %struct.__darwin_pthread_handler_rec*, [8176 x i8] } +%struct.__darwin_pthread_handler_rec = type { void (i8*)*, i8*, %struct.__darwin_pthread_handler_rec* } +%struct._opaque_pthread_attr_t = type { i64, [56 x i8] } + +@x = global i32 0, align 4, !dbg !0 + +; Function Attrs: noinline nounwind ssp uwtable +define i8* @thread_1(i8* noundef %0) #0 !dbg !23 { + call void @llvm.dbg.value(metadata i8* %0, metadata !27, metadata !DIExpression()), !dbg !28 + store atomic i32 1, i32* @x seq_cst, align 4, !dbg !29 + ret i8* undef, !dbg !30 +} + +; Function Attrs: nofree nosync nounwind readnone speculatable willreturn +declare void @llvm.dbg.declare(metadata, metadata, metadata) #1 + +; Function Attrs: noinline nounwind ssp uwtable +define i8* @thread_2(i8* noundef %0) #0 !dbg !31 { + call void @llvm.dbg.value(metadata i8* %0, metadata !32, metadata !DIExpression()), !dbg !33 + br label %2, !dbg !34 + +2: ; preds = %2, %1 + %3 = load atomic i32, i32* @x seq_cst, align 4, !dbg !35 + %4 = icmp ne i32 %3, 1, !dbg !36 + br i1 %4, label %2, label %5, !dbg !34, !llvm.loop !37 + +5: ; preds = %2 + ret i8* null, !dbg !40 +} + +; Function Attrs: noinline nounwind ssp uwtable +define i32 @main() #0 !dbg !41 { + %1 = alloca %struct._opaque_pthread_t*, align 8 + %2 = alloca %struct._opaque_pthread_t*, align 8 + call void @llvm.dbg.declare(metadata %struct._opaque_pthread_t** %1, metadata !44, metadata !DIExpression()), !dbg !69 + call void @llvm.dbg.declare(metadata %struct._opaque_pthread_t** %2, metadata !70, metadata !DIExpression()), !dbg !71 + %3 = call i32 @pthread_create(%struct._opaque_pthread_t** noundef %1, %struct._opaque_pthread_attr_t* noundef null, i8* (i8*)* noundef @thread_1, i8* noundef null), !dbg !72 + %4 = call i32 @pthread_create(%struct._opaque_pthread_t** noundef %2, %struct._opaque_pthread_attr_t* noundef null, i8* (i8*)* noundef @thread_2, i8* noundef null), !dbg !73 + ret i32 0, !dbg !74 +} + +declare i32 @pthread_create(%struct._opaque_pthread_t** noundef, %struct._opaque_pthread_attr_t* noundef, i8* (i8*)* noundef, i8* noundef) #2 + +; Function Attrs: nofree nosync nounwind readnone speculatable willreturn +declare void @llvm.dbg.value(metadata, metadata, metadata) #1 + +attributes #0 = { noinline nounwind ssp uwtable "frame-pointer"="non-leaf" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="apple-m1" "target-features"="+aes,+crc,+crypto,+dotprod,+fp-armv8,+fp16fml,+fullfp16,+lse,+neon,+ras,+rcpc,+rdm,+sha2,+v8.5a,+zcm,+zcz" } +attributes #1 = { nofree nosync nounwind readnone speculatable willreturn } +attributes #2 = { "frame-pointer"="non-leaf" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="apple-m1" "target-features"="+aes,+crc,+crypto,+dotprod,+fp-armv8,+fp16fml,+fullfp16,+lse,+neon,+ras,+rcpc,+rdm,+sha2,+v8.5a,+zcm,+zcz" } + +!llvm.dbg.cu = !{!2} +!llvm.module.flags = !{!12, !13, !14, !15, !16, !17, !18, !19, !20, !21} +!llvm.ident = !{!22} + +!0 = !DIGlobalVariableExpression(var: !1, expr: !DIExpression()) +!1 = distinct !DIGlobalVariable(name: "x", scope: !2, file: !7, line: 8, type: !8, isLocal: false, isDefinition: true) +!2 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "Homebrew clang version 14.0.6", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !4, globals: !6, splitDebugInlining: false, nameTableKind: None, sysroot: "/Library/Developer/CommandLineTools/SDKs/MacOSX13.sdk", sdk: "MacOSX13.sdk") +!3 = !DIFile(filename: "/Users/thomashaas/IdeaProjects/Dat3M/benchmarks/progress/progressHSA.c", directory: "/Users/thomashaas/IdeaProjects/Dat3M") +!4 = !{!5} +!5 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: null, size: 64) +!6 = !{!0} +!7 = !DIFile(filename: "benchmarks/progress/progressHSA.c", directory: "/Users/thomashaas/IdeaProjects/Dat3M") +!8 = !DIDerivedType(tag: DW_TAG_typedef, name: "atomic_int", file: !9, line: 92, baseType: !10) +!9 = !DIFile(filename: "/opt/homebrew/Cellar/llvm@14/14.0.6/lib/clang/14.0.6/include/stdatomic.h", directory: "") +!10 = !DIDerivedType(tag: DW_TAG_atomic_type, baseType: !11) +!11 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) +!12 = !{i32 7, !"Dwarf Version", i32 4} +!13 = !{i32 2, !"Debug Info Version", i32 3} +!14 = !{i32 1, !"wchar_size", i32 4} +!15 = !{i32 1, !"branch-target-enforcement", i32 0} +!16 = !{i32 1, !"sign-return-address", i32 0} +!17 = !{i32 1, !"sign-return-address-all", i32 0} +!18 = !{i32 1, !"sign-return-address-with-bkey", i32 0} +!19 = !{i32 7, !"PIC Level", i32 2} +!20 = !{i32 7, !"uwtable", i32 1} +!21 = !{i32 7, !"frame-pointer", i32 1} +!22 = !{!"Homebrew clang version 14.0.6"} +!23 = distinct !DISubprogram(name: "thread_1", scope: !7, file: !7, line: 10, type: !24, scopeLine: 11, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !2, retainedNodes: !26) +!24 = !DISubroutineType(types: !25) +!25 = !{!5, !5} +!26 = !{} +!27 = !DILocalVariable(name: "unused", arg: 1, scope: !23, file: !7, line: 10, type: !5) +!28 = !DILocation(line: 0, scope: !23) +!29 = !DILocation(line: 12, column: 7, scope: !23) +!30 = !DILocation(line: 13, column: 1, scope: !23) +!31 = distinct !DISubprogram(name: "thread_2", scope: !7, file: !7, line: 15, type: !24, scopeLine: 16, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !2, retainedNodes: !26) +!32 = !DILocalVariable(name: "unused", arg: 1, scope: !31, file: !7, line: 15, type: !5) +!33 = !DILocation(line: 0, scope: !31) +!34 = !DILocation(line: 17, column: 5, scope: !31) +!35 = !DILocation(line: 17, column: 12, scope: !31) +!36 = !DILocation(line: 17, column: 14, scope: !31) +!37 = distinct !{!37, !34, !38, !39} +!38 = !DILocation(line: 17, column: 19, scope: !31) +!39 = !{!"llvm.loop.mustprogress"} +!40 = !DILocation(line: 18, column: 5, scope: !31) +!41 = distinct !DISubprogram(name: "main", scope: !7, file: !7, line: 21, type: !42, scopeLine: 22, spFlags: DISPFlagDefinition, unit: !2, retainedNodes: !26) +!42 = !DISubroutineType(types: !43) +!43 = !{!11} +!44 = !DILocalVariable(name: "t1", scope: !41, file: !7, line: 23, type: !45) +!45 = !DIDerivedType(tag: DW_TAG_typedef, name: "pthread_t", file: !46, line: 31, baseType: !47) +!46 = !DIFile(filename: "/Library/Developer/CommandLineTools/SDKs/MacOSX13.sdk/usr/include/sys/_pthread/_pthread_t.h", directory: "") +!47 = !DIDerivedType(tag: DW_TAG_typedef, name: "__darwin_pthread_t", file: !48, line: 118, baseType: !49) +!48 = !DIFile(filename: "/Library/Developer/CommandLineTools/SDKs/MacOSX13.sdk/usr/include/sys/_pthread/_pthread_types.h", directory: "") +!49 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !50, size: 64) +!50 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "_opaque_pthread_t", file: !48, line: 103, size: 65536, elements: !51) +!51 = !{!52, !54, !64} +!52 = !DIDerivedType(tag: DW_TAG_member, name: "__sig", scope: !50, file: !48, line: 104, baseType: !53, size: 64) +!53 = !DIBasicType(name: "long", size: 64, encoding: DW_ATE_signed) +!54 = !DIDerivedType(tag: DW_TAG_member, name: "__cleanup_stack", scope: !50, file: !48, line: 105, baseType: !55, size: 64, offset: 64) +!55 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !56, size: 64) +!56 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "__darwin_pthread_handler_rec", file: !48, line: 57, size: 192, elements: !57) +!57 = !{!58, !62, !63} +!58 = !DIDerivedType(tag: DW_TAG_member, name: "__routine", scope: !56, file: !48, line: 58, baseType: !59, size: 64) +!59 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !60, size: 64) +!60 = !DISubroutineType(types: !61) +!61 = !{null, !5} +!62 = !DIDerivedType(tag: DW_TAG_member, name: "__arg", scope: !56, file: !48, line: 59, baseType: !5, size: 64, offset: 64) +!63 = !DIDerivedType(tag: DW_TAG_member, name: "__next", scope: !56, file: !48, line: 60, baseType: !55, size: 64, offset: 128) +!64 = !DIDerivedType(tag: DW_TAG_member, name: "__opaque", scope: !50, file: !48, line: 106, baseType: !65, size: 65408, offset: 128) +!65 = !DICompositeType(tag: DW_TAG_array_type, baseType: !66, size: 65408, elements: !67) +!66 = !DIBasicType(name: "char", size: 8, encoding: DW_ATE_signed_char) +!67 = !{!68} +!68 = !DISubrange(count: 8176) +!69 = !DILocation(line: 23, column: 15, scope: !41) +!70 = !DILocalVariable(name: "t2", scope: !41, file: !7, line: 23, type: !45) +!71 = !DILocation(line: 23, column: 19, scope: !41) +!72 = !DILocation(line: 24, column: 5, scope: !41) +!73 = !DILocation(line: 25, column: 5, scope: !41) +!74 = !DILocation(line: 26, column: 5, scope: !41) diff --git a/dartagnan/src/test/resources/progress/progressOBE-HSA.ll b/dartagnan/src/test/resources/progress/progressOBE-HSA.ll new file mode 100644 index 0000000000..fcbc352d76 --- /dev/null +++ b/dartagnan/src/test/resources/progress/progressOBE-HSA.ll @@ -0,0 +1,123 @@ +; ModuleID = '/Users/thomashaas/IdeaProjects/Dat3M/output/progressOBE-HSA.ll' +source_filename = "/Users/thomashaas/IdeaProjects/Dat3M/benchmarks/progress/progressOBE-HSA.c" +target datalayout = "e-m:o-i64:64-i128:128-n32:64-S128" +target triple = "arm64-apple-macosx14.0.0" + +%struct._opaque_pthread_t = type { i64, %struct.__darwin_pthread_handler_rec*, [8176 x i8] } +%struct.__darwin_pthread_handler_rec = type { void (i8*)*, i8*, %struct.__darwin_pthread_handler_rec* } +%struct._opaque_pthread_attr_t = type { i64, [56 x i8] } + +@x = global i32 0, align 4, !dbg !0 + +; Function Attrs: noinline nounwind ssp uwtable +define i8* @thread_1(i8* noundef %0) #0 !dbg !23 { + call void @llvm.dbg.value(metadata i8* %0, metadata !27, metadata !DIExpression()), !dbg !28 + br label %2, !dbg !29 + +2: ; preds = %2, %1 + %3 = load atomic i32, i32* @x seq_cst, align 4, !dbg !30 + %4 = icmp ne i32 %3, 0, !dbg !31 + br i1 %4, label %2, label %5, !dbg !29, !llvm.loop !32 + +5: ; preds = %2 + ret i8* null, !dbg !35 +} + +; Function Attrs: nofree nosync nounwind readnone speculatable willreturn +declare void @llvm.dbg.declare(metadata, metadata, metadata) #1 + +; Function Attrs: noinline nounwind ssp uwtable +define i32 @main() #0 !dbg !36 { + %1 = alloca %struct._opaque_pthread_t*, align 8 + call void @llvm.dbg.declare(metadata %struct._opaque_pthread_t** %1, metadata !39, metadata !DIExpression()), !dbg !64 + call void @llvm.dbg.declare(metadata %struct._opaque_pthread_t** undef, metadata !65, metadata !DIExpression()), !dbg !66 + %2 = call i32 @pthread_create(%struct._opaque_pthread_t** noundef %1, %struct._opaque_pthread_attr_t* noundef null, i8* (i8*)* noundef @thread_1, i8* noundef null), !dbg !67 + store atomic i32 1, i32* @x seq_cst, align 4, !dbg !68 + store atomic i32 0, i32* @x seq_cst, align 4, !dbg !69 + ret i32 0, !dbg !70 +} + +declare i32 @pthread_create(%struct._opaque_pthread_t** noundef, %struct._opaque_pthread_attr_t* noundef, i8* (i8*)* noundef, i8* noundef) #2 + +; Function Attrs: nofree nosync nounwind readnone speculatable willreturn +declare void @llvm.dbg.value(metadata, metadata, metadata) #1 + +attributes #0 = { noinline nounwind ssp uwtable "frame-pointer"="non-leaf" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="apple-m1" "target-features"="+aes,+crc,+crypto,+dotprod,+fp-armv8,+fp16fml,+fullfp16,+lse,+neon,+ras,+rcpc,+rdm,+sha2,+v8.5a,+zcm,+zcz" } +attributes #1 = { nofree nosync nounwind readnone speculatable willreturn } +attributes #2 = { "frame-pointer"="non-leaf" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="apple-m1" "target-features"="+aes,+crc,+crypto,+dotprod,+fp-armv8,+fp16fml,+fullfp16,+lse,+neon,+ras,+rcpc,+rdm,+sha2,+v8.5a,+zcm,+zcz" } + +!llvm.dbg.cu = !{!2} +!llvm.module.flags = !{!12, !13, !14, !15, !16, !17, !18, !19, !20, !21} +!llvm.ident = !{!22} + +!0 = !DIGlobalVariableExpression(var: !1, expr: !DIExpression()) +!1 = distinct !DIGlobalVariable(name: "x", scope: !2, file: !7, line: 8, type: !8, isLocal: false, isDefinition: true) +!2 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "Homebrew clang version 14.0.6", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !4, globals: !6, splitDebugInlining: false, nameTableKind: None, sysroot: "/Library/Developer/CommandLineTools/SDKs/MacOSX13.sdk", sdk: "MacOSX13.sdk") +!3 = !DIFile(filename: "/Users/thomashaas/IdeaProjects/Dat3M/benchmarks/progress/progressOBE-HSA.c", directory: "/Users/thomashaas/IdeaProjects/Dat3M") +!4 = !{!5} +!5 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: null, size: 64) +!6 = !{!0} +!7 = !DIFile(filename: "benchmarks/progress/progressOBE-HSA.c", directory: "/Users/thomashaas/IdeaProjects/Dat3M") +!8 = !DIDerivedType(tag: DW_TAG_typedef, name: "atomic_int", file: !9, line: 92, baseType: !10) +!9 = !DIFile(filename: "/opt/homebrew/Cellar/llvm@14/14.0.6/lib/clang/14.0.6/include/stdatomic.h", directory: "") +!10 = !DIDerivedType(tag: DW_TAG_atomic_type, baseType: !11) +!11 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) +!12 = !{i32 7, !"Dwarf Version", i32 4} +!13 = !{i32 2, !"Debug Info Version", i32 3} +!14 = !{i32 1, !"wchar_size", i32 4} +!15 = !{i32 1, !"branch-target-enforcement", i32 0} +!16 = !{i32 1, !"sign-return-address", i32 0} +!17 = !{i32 1, !"sign-return-address-all", i32 0} +!18 = !{i32 1, !"sign-return-address-with-bkey", i32 0} +!19 = !{i32 7, !"PIC Level", i32 2} +!20 = !{i32 7, !"uwtable", i32 1} +!21 = !{i32 7, !"frame-pointer", i32 1} +!22 = !{!"Homebrew clang version 14.0.6"} +!23 = distinct !DISubprogram(name: "thread_1", scope: !7, file: !7, line: 10, type: !24, scopeLine: 11, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !2, retainedNodes: !26) +!24 = !DISubroutineType(types: !25) +!25 = !{!5, !5} +!26 = !{} +!27 = !DILocalVariable(name: "unused", arg: 1, scope: !23, file: !7, line: 10, type: !5) +!28 = !DILocation(line: 0, scope: !23) +!29 = !DILocation(line: 12, column: 5, scope: !23) +!30 = !DILocation(line: 12, column: 12, scope: !23) +!31 = !DILocation(line: 12, column: 14, scope: !23) +!32 = distinct !{!32, !29, !33, !34} +!33 = !DILocation(line: 12, column: 19, scope: !23) +!34 = !{!"llvm.loop.mustprogress"} +!35 = !DILocation(line: 13, column: 5, scope: !23) +!36 = distinct !DISubprogram(name: "main", scope: !7, file: !7, line: 16, type: !37, scopeLine: 17, spFlags: DISPFlagDefinition, unit: !2, retainedNodes: !26) +!37 = !DISubroutineType(types: !38) +!38 = !{!11} +!39 = !DILocalVariable(name: "t1", scope: !36, file: !7, line: 18, type: !40) +!40 = !DIDerivedType(tag: DW_TAG_typedef, name: "pthread_t", file: !41, line: 31, baseType: !42) +!41 = !DIFile(filename: "/Library/Developer/CommandLineTools/SDKs/MacOSX13.sdk/usr/include/sys/_pthread/_pthread_t.h", directory: "") +!42 = !DIDerivedType(tag: DW_TAG_typedef, name: "__darwin_pthread_t", file: !43, line: 118, baseType: !44) +!43 = !DIFile(filename: "/Library/Developer/CommandLineTools/SDKs/MacOSX13.sdk/usr/include/sys/_pthread/_pthread_types.h", directory: "") +!44 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !45, size: 64) +!45 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "_opaque_pthread_t", file: !43, line: 103, size: 65536, elements: !46) +!46 = !{!47, !49, !59} +!47 = !DIDerivedType(tag: DW_TAG_member, name: "__sig", scope: !45, file: !43, line: 104, baseType: !48, size: 64) +!48 = !DIBasicType(name: "long", size: 64, encoding: DW_ATE_signed) +!49 = !DIDerivedType(tag: DW_TAG_member, name: "__cleanup_stack", scope: !45, file: !43, line: 105, baseType: !50, size: 64, offset: 64) +!50 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !51, size: 64) +!51 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "__darwin_pthread_handler_rec", file: !43, line: 57, size: 192, elements: !52) +!52 = !{!53, !57, !58} +!53 = !DIDerivedType(tag: DW_TAG_member, name: "__routine", scope: !51, file: !43, line: 58, baseType: !54, size: 64) +!54 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !55, size: 64) +!55 = !DISubroutineType(types: !56) +!56 = !{null, !5} +!57 = !DIDerivedType(tag: DW_TAG_member, name: "__arg", scope: !51, file: !43, line: 59, baseType: !5, size: 64, offset: 64) +!58 = !DIDerivedType(tag: DW_TAG_member, name: "__next", scope: !51, file: !43, line: 60, baseType: !50, size: 64, offset: 128) +!59 = !DIDerivedType(tag: DW_TAG_member, name: "__opaque", scope: !45, file: !43, line: 106, baseType: !60, size: 65408, offset: 128) +!60 = !DICompositeType(tag: DW_TAG_array_type, baseType: !61, size: 65408, elements: !62) +!61 = !DIBasicType(name: "char", size: 8, encoding: DW_ATE_signed_char) +!62 = !{!63} +!63 = !DISubrange(count: 8176) +!64 = !DILocation(line: 18, column: 15, scope: !36) +!65 = !DILocalVariable(name: "t2", scope: !36, file: !7, line: 18, type: !40) +!66 = !DILocation(line: 18, column: 19, scope: !36) +!67 = !DILocation(line: 19, column: 5, scope: !36) +!68 = !DILocation(line: 20, column: 7, scope: !36) +!69 = !DILocation(line: 22, column: 7, scope: !36) +!70 = !DILocation(line: 23, column: 5, scope: !36) diff --git a/dartagnan/src/test/resources/progress/progressOBE.ll b/dartagnan/src/test/resources/progress/progressOBE.ll new file mode 100644 index 0000000000..28c25a00fc --- /dev/null +++ b/dartagnan/src/test/resources/progress/progressOBE.ll @@ -0,0 +1,136 @@ +; ModuleID = '/Users/thomashaas/IdeaProjects/Dat3M/output/progressOBE.ll' +source_filename = "/Users/thomashaas/IdeaProjects/Dat3M/benchmarks/progress/progressOBE.c" +target datalayout = "e-m:o-i64:64-i128:128-n32:64-S128" +target triple = "arm64-apple-macosx14.0.0" + +%struct._opaque_pthread_t = type { i64, %struct.__darwin_pthread_handler_rec*, [8176 x i8] } +%struct.__darwin_pthread_handler_rec = type { void (i8*)*, i8*, %struct.__darwin_pthread_handler_rec* } +%struct._opaque_pthread_attr_t = type { i64, [56 x i8] } + +@x = global i32 0, align 4, !dbg !0 + +; Function Attrs: noinline nounwind ssp uwtable +define i8* @thread_1(i8* noundef %0) #0 !dbg !23 { + call void @llvm.dbg.value(metadata i8* %0, metadata !27, metadata !DIExpression()), !dbg !28 + br label %2, !dbg !29 + +2: ; preds = %2, %1 + %3 = load atomic i32, i32* @x seq_cst, align 4, !dbg !30 + %4 = icmp ne i32 %3, 0, !dbg !31 + br i1 %4, label %2, label %5, !dbg !29, !llvm.loop !32 + +5: ; preds = %2 + ret i8* null, !dbg !35 +} + +; Function Attrs: nofree nosync nounwind readnone speculatable willreturn +declare void @llvm.dbg.declare(metadata, metadata, metadata) #1 + +; Function Attrs: noinline nounwind ssp uwtable +define i8* @thread_2(i8* noundef %0) #0 !dbg !36 { + call void @llvm.dbg.value(metadata i8* %0, metadata !37, metadata !DIExpression()), !dbg !38 + store atomic i32 1, i32* @x seq_cst, align 4, !dbg !39 + store atomic i32 0, i32* @x seq_cst, align 4, !dbg !40 + ret i8* undef, !dbg !41 +} + +; Function Attrs: noinline nounwind ssp uwtable +define i32 @main() #0 !dbg !42 { + %1 = alloca %struct._opaque_pthread_t*, align 8 + %2 = alloca %struct._opaque_pthread_t*, align 8 + call void @llvm.dbg.declare(metadata %struct._opaque_pthread_t** %1, metadata !45, metadata !DIExpression()), !dbg !70 + call void @llvm.dbg.declare(metadata %struct._opaque_pthread_t** %2, metadata !71, metadata !DIExpression()), !dbg !72 + %3 = call i32 @pthread_create(%struct._opaque_pthread_t** noundef %1, %struct._opaque_pthread_attr_t* noundef null, i8* (i8*)* noundef @thread_1, i8* noundef null), !dbg !73 + %4 = call i32 @pthread_create(%struct._opaque_pthread_t** noundef %2, %struct._opaque_pthread_attr_t* noundef null, i8* (i8*)* noundef @thread_2, i8* noundef null), !dbg !74 + ret i32 0, !dbg !75 +} + +declare i32 @pthread_create(%struct._opaque_pthread_t** noundef, %struct._opaque_pthread_attr_t* noundef, i8* (i8*)* noundef, i8* noundef) #2 + +; Function Attrs: nofree nosync nounwind readnone speculatable willreturn +declare void @llvm.dbg.value(metadata, metadata, metadata) #1 + +attributes #0 = { noinline nounwind ssp uwtable "frame-pointer"="non-leaf" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="apple-m1" "target-features"="+aes,+crc,+crypto,+dotprod,+fp-armv8,+fp16fml,+fullfp16,+lse,+neon,+ras,+rcpc,+rdm,+sha2,+v8.5a,+zcm,+zcz" } +attributes #1 = { nofree nosync nounwind readnone speculatable willreturn } +attributes #2 = { "frame-pointer"="non-leaf" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="apple-m1" "target-features"="+aes,+crc,+crypto,+dotprod,+fp-armv8,+fp16fml,+fullfp16,+lse,+neon,+ras,+rcpc,+rdm,+sha2,+v8.5a,+zcm,+zcz" } + +!llvm.dbg.cu = !{!2} +!llvm.module.flags = !{!12, !13, !14, !15, !16, !17, !18, !19, !20, !21} +!llvm.ident = !{!22} + +!0 = !DIGlobalVariableExpression(var: !1, expr: !DIExpression()) +!1 = distinct !DIGlobalVariable(name: "x", scope: !2, file: !7, line: 8, type: !8, isLocal: false, isDefinition: true) +!2 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "Homebrew clang version 14.0.6", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !4, globals: !6, splitDebugInlining: false, nameTableKind: None, sysroot: "/Library/Developer/CommandLineTools/SDKs/MacOSX13.sdk", sdk: "MacOSX13.sdk") +!3 = !DIFile(filename: "/Users/thomashaas/IdeaProjects/Dat3M/benchmarks/progress/progressOBE.c", directory: "/Users/thomashaas/IdeaProjects/Dat3M") +!4 = !{!5} +!5 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: null, size: 64) +!6 = !{!0} +!7 = !DIFile(filename: "benchmarks/progress/progressOBE.c", directory: "/Users/thomashaas/IdeaProjects/Dat3M") +!8 = !DIDerivedType(tag: DW_TAG_typedef, name: "atomic_int", file: !9, line: 92, baseType: !10) +!9 = !DIFile(filename: "/opt/homebrew/Cellar/llvm@14/14.0.6/lib/clang/14.0.6/include/stdatomic.h", directory: "") +!10 = !DIDerivedType(tag: DW_TAG_atomic_type, baseType: !11) +!11 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) +!12 = !{i32 7, !"Dwarf Version", i32 4} +!13 = !{i32 2, !"Debug Info Version", i32 3} +!14 = !{i32 1, !"wchar_size", i32 4} +!15 = !{i32 1, !"branch-target-enforcement", i32 0} +!16 = !{i32 1, !"sign-return-address", i32 0} +!17 = !{i32 1, !"sign-return-address-all", i32 0} +!18 = !{i32 1, !"sign-return-address-with-bkey", i32 0} +!19 = !{i32 7, !"PIC Level", i32 2} +!20 = !{i32 7, !"uwtable", i32 1} +!21 = !{i32 7, !"frame-pointer", i32 1} +!22 = !{!"Homebrew clang version 14.0.6"} +!23 = distinct !DISubprogram(name: "thread_1", scope: !7, file: !7, line: 10, type: !24, scopeLine: 11, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !2, retainedNodes: !26) +!24 = !DISubroutineType(types: !25) +!25 = !{!5, !5} +!26 = !{} +!27 = !DILocalVariable(name: "unused", arg: 1, scope: !23, file: !7, line: 10, type: !5) +!28 = !DILocation(line: 0, scope: !23) +!29 = !DILocation(line: 12, column: 5, scope: !23) +!30 = !DILocation(line: 12, column: 12, scope: !23) +!31 = !DILocation(line: 12, column: 14, scope: !23) +!32 = distinct !{!32, !29, !33, !34} +!33 = !DILocation(line: 12, column: 19, scope: !23) +!34 = !{!"llvm.loop.mustprogress"} +!35 = !DILocation(line: 13, column: 5, scope: !23) +!36 = distinct !DISubprogram(name: "thread_2", scope: !7, file: !7, line: 16, type: !24, scopeLine: 17, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !2, retainedNodes: !26) +!37 = !DILocalVariable(name: "unused", arg: 1, scope: !36, file: !7, line: 16, type: !5) +!38 = !DILocation(line: 0, scope: !36) +!39 = !DILocation(line: 18, column: 7, scope: !36) +!40 = !DILocation(line: 20, column: 7, scope: !36) +!41 = !DILocation(line: 21, column: 1, scope: !36) +!42 = distinct !DISubprogram(name: "main", scope: !7, file: !7, line: 23, type: !43, scopeLine: 24, spFlags: DISPFlagDefinition, unit: !2, retainedNodes: !26) +!43 = !DISubroutineType(types: !44) +!44 = !{!11} +!45 = !DILocalVariable(name: "t1", scope: !42, file: !7, line: 25, type: !46) +!46 = !DIDerivedType(tag: DW_TAG_typedef, name: "pthread_t", file: !47, line: 31, baseType: !48) +!47 = !DIFile(filename: "/Library/Developer/CommandLineTools/SDKs/MacOSX13.sdk/usr/include/sys/_pthread/_pthread_t.h", directory: "") +!48 = !DIDerivedType(tag: DW_TAG_typedef, name: "__darwin_pthread_t", file: !49, line: 118, baseType: !50) +!49 = !DIFile(filename: "/Library/Developer/CommandLineTools/SDKs/MacOSX13.sdk/usr/include/sys/_pthread/_pthread_types.h", directory: "") +!50 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !51, size: 64) +!51 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "_opaque_pthread_t", file: !49, line: 103, size: 65536, elements: !52) +!52 = !{!53, !55, !65} +!53 = !DIDerivedType(tag: DW_TAG_member, name: "__sig", scope: !51, file: !49, line: 104, baseType: !54, size: 64) +!54 = !DIBasicType(name: "long", size: 64, encoding: DW_ATE_signed) +!55 = !DIDerivedType(tag: DW_TAG_member, name: "__cleanup_stack", scope: !51, file: !49, line: 105, baseType: !56, size: 64, offset: 64) +!56 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !57, size: 64) +!57 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "__darwin_pthread_handler_rec", file: !49, line: 57, size: 192, elements: !58) +!58 = !{!59, !63, !64} +!59 = !DIDerivedType(tag: DW_TAG_member, name: "__routine", scope: !57, file: !49, line: 58, baseType: !60, size: 64) +!60 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !61, size: 64) +!61 = !DISubroutineType(types: !62) +!62 = !{null, !5} +!63 = !DIDerivedType(tag: DW_TAG_member, name: "__arg", scope: !57, file: !49, line: 59, baseType: !5, size: 64, offset: 64) +!64 = !DIDerivedType(tag: DW_TAG_member, name: "__next", scope: !57, file: !49, line: 60, baseType: !56, size: 64, offset: 128) +!65 = !DIDerivedType(tag: DW_TAG_member, name: "__opaque", scope: !51, file: !49, line: 106, baseType: !66, size: 65408, offset: 128) +!66 = !DICompositeType(tag: DW_TAG_array_type, baseType: !67, size: 65408, elements: !68) +!67 = !DIBasicType(name: "char", size: 8, encoding: DW_ATE_signed_char) +!68 = !{!69} +!69 = !DISubrange(count: 8176) +!70 = !DILocation(line: 25, column: 15, scope: !42) +!71 = !DILocalVariable(name: "t2", scope: !42, file: !7, line: 25, type: !46) +!72 = !DILocation(line: 25, column: 19, scope: !42) +!73 = !DILocation(line: 26, column: 5, scope: !42) +!74 = !DILocation(line: 27, column: 5, scope: !42) +!75 = !DILocation(line: 28, column: 5, scope: !42) diff --git a/dartagnan/src/test/resources/progress/progressUnfair.ll b/dartagnan/src/test/resources/progress/progressUnfair.ll new file mode 100644 index 0000000000..12eb796dd9 --- /dev/null +++ b/dartagnan/src/test/resources/progress/progressUnfair.ll @@ -0,0 +1,121 @@ +; ModuleID = '/Users/thomashaas/IdeaProjects/Dat3M/output/progressUnfair.ll' +source_filename = "/Users/thomashaas/IdeaProjects/Dat3M/benchmarks/progress/progressUnfair.c" +target datalayout = "e-m:o-i64:64-i128:128-n32:64-S128" +target triple = "arm64-apple-macosx14.0.0" + +%struct._opaque_pthread_t = type { i64, %struct.__darwin_pthread_handler_rec*, [8176 x i8] } +%struct.__darwin_pthread_handler_rec = type { void (i8*)*, i8*, %struct.__darwin_pthread_handler_rec* } +%struct._opaque_pthread_attr_t = type { i64, [56 x i8] } + +@x = global i32 0, align 4, !dbg !0 + +; Function Attrs: noinline nounwind ssp uwtable +define i8* @thread_1(i8* noundef %0) #0 !dbg !23 { + call void @llvm.dbg.value(metadata i8* %0, metadata !27, metadata !DIExpression()), !dbg !28 + br label %2, !dbg !29 + +2: ; preds = %2, %1 + %3 = load atomic i32, i32* @x seq_cst, align 4, !dbg !30 + %4 = icmp ne i32 %3, 1, !dbg !31 + br i1 %4, label %2, label %5, !dbg !29, !llvm.loop !32 + +5: ; preds = %2 + ret i8* null, !dbg !35 +} + +; Function Attrs: nofree nosync nounwind readnone speculatable willreturn +declare void @llvm.dbg.declare(metadata, metadata, metadata) #1 + +; Function Attrs: noinline nounwind ssp uwtable +define i32 @main() #0 !dbg !36 { + %1 = alloca %struct._opaque_pthread_t*, align 8 + call void @llvm.dbg.declare(metadata %struct._opaque_pthread_t** %1, metadata !39, metadata !DIExpression()), !dbg !64 + call void @llvm.dbg.declare(metadata %struct._opaque_pthread_t** undef, metadata !65, metadata !DIExpression()), !dbg !66 + store atomic i32 1, i32* @x seq_cst, align 4, !dbg !67 + %2 = call i32 @pthread_create(%struct._opaque_pthread_t** noundef %1, %struct._opaque_pthread_attr_t* noundef null, i8* (i8*)* noundef @thread_1, i8* noundef null), !dbg !68 + ret i32 0, !dbg !69 +} + +declare i32 @pthread_create(%struct._opaque_pthread_t** noundef, %struct._opaque_pthread_attr_t* noundef, i8* (i8*)* noundef, i8* noundef) #2 + +; Function Attrs: nofree nosync nounwind readnone speculatable willreturn +declare void @llvm.dbg.value(metadata, metadata, metadata) #1 + +attributes #0 = { noinline nounwind ssp uwtable "frame-pointer"="non-leaf" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="apple-m1" "target-features"="+aes,+crc,+crypto,+dotprod,+fp-armv8,+fp16fml,+fullfp16,+lse,+neon,+ras,+rcpc,+rdm,+sha2,+v8.5a,+zcm,+zcz" } +attributes #1 = { nofree nosync nounwind readnone speculatable willreturn } +attributes #2 = { "frame-pointer"="non-leaf" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="apple-m1" "target-features"="+aes,+crc,+crypto,+dotprod,+fp-armv8,+fp16fml,+fullfp16,+lse,+neon,+ras,+rcpc,+rdm,+sha2,+v8.5a,+zcm,+zcz" } + +!llvm.dbg.cu = !{!2} +!llvm.module.flags = !{!12, !13, !14, !15, !16, !17, !18, !19, !20, !21} +!llvm.ident = !{!22} + +!0 = !DIGlobalVariableExpression(var: !1, expr: !DIExpression()) +!1 = distinct !DIGlobalVariable(name: "x", scope: !2, file: !7, line: 6, type: !8, isLocal: false, isDefinition: true) +!2 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "Homebrew clang version 14.0.6", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !4, globals: !6, splitDebugInlining: false, nameTableKind: None, sysroot: "/Library/Developer/CommandLineTools/SDKs/MacOSX13.sdk", sdk: "MacOSX13.sdk") +!3 = !DIFile(filename: "/Users/thomashaas/IdeaProjects/Dat3M/benchmarks/progress/progressUnfair.c", directory: "/Users/thomashaas/IdeaProjects/Dat3M") +!4 = !{!5} +!5 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: null, size: 64) +!6 = !{!0} +!7 = !DIFile(filename: "benchmarks/progress/progressUnfair.c", directory: "/Users/thomashaas/IdeaProjects/Dat3M") +!8 = !DIDerivedType(tag: DW_TAG_typedef, name: "atomic_int", file: !9, line: 92, baseType: !10) +!9 = !DIFile(filename: "/opt/homebrew/Cellar/llvm@14/14.0.6/lib/clang/14.0.6/include/stdatomic.h", directory: "") +!10 = !DIDerivedType(tag: DW_TAG_atomic_type, baseType: !11) +!11 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) +!12 = !{i32 7, !"Dwarf Version", i32 4} +!13 = !{i32 2, !"Debug Info Version", i32 3} +!14 = !{i32 1, !"wchar_size", i32 4} +!15 = !{i32 1, !"branch-target-enforcement", i32 0} +!16 = !{i32 1, !"sign-return-address", i32 0} +!17 = !{i32 1, !"sign-return-address-all", i32 0} +!18 = !{i32 1, !"sign-return-address-with-bkey", i32 0} +!19 = !{i32 7, !"PIC Level", i32 2} +!20 = !{i32 7, !"uwtable", i32 1} +!21 = !{i32 7, !"frame-pointer", i32 1} +!22 = !{!"Homebrew clang version 14.0.6"} +!23 = distinct !DISubprogram(name: "thread_1", scope: !7, file: !7, line: 10, type: !24, scopeLine: 11, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !2, retainedNodes: !26) +!24 = !DISubroutineType(types: !25) +!25 = !{!5, !5} +!26 = !{} +!27 = !DILocalVariable(name: "unused", arg: 1, scope: !23, file: !7, line: 10, type: !5) +!28 = !DILocation(line: 0, scope: !23) +!29 = !DILocation(line: 12, column: 5, scope: !23) +!30 = !DILocation(line: 12, column: 12, scope: !23) +!31 = !DILocation(line: 12, column: 14, scope: !23) +!32 = distinct !{!32, !29, !33, !34} +!33 = !DILocation(line: 12, column: 19, scope: !23) +!34 = !{!"llvm.loop.mustprogress"} +!35 = !DILocation(line: 13, column: 5, scope: !23) +!36 = distinct !DISubprogram(name: "main", scope: !7, file: !7, line: 16, type: !37, scopeLine: 17, spFlags: DISPFlagDefinition, unit: !2, retainedNodes: !26) +!37 = !DISubroutineType(types: !38) +!38 = !{!11} +!39 = !DILocalVariable(name: "t1", scope: !36, file: !7, line: 18, type: !40) +!40 = !DIDerivedType(tag: DW_TAG_typedef, name: "pthread_t", file: !41, line: 31, baseType: !42) +!41 = !DIFile(filename: "/Library/Developer/CommandLineTools/SDKs/MacOSX13.sdk/usr/include/sys/_pthread/_pthread_t.h", directory: "") +!42 = !DIDerivedType(tag: DW_TAG_typedef, name: "__darwin_pthread_t", file: !43, line: 118, baseType: !44) +!43 = !DIFile(filename: "/Library/Developer/CommandLineTools/SDKs/MacOSX13.sdk/usr/include/sys/_pthread/_pthread_types.h", directory: "") +!44 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !45, size: 64) +!45 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "_opaque_pthread_t", file: !43, line: 103, size: 65536, elements: !46) +!46 = !{!47, !49, !59} +!47 = !DIDerivedType(tag: DW_TAG_member, name: "__sig", scope: !45, file: !43, line: 104, baseType: !48, size: 64) +!48 = !DIBasicType(name: "long", size: 64, encoding: DW_ATE_signed) +!49 = !DIDerivedType(tag: DW_TAG_member, name: "__cleanup_stack", scope: !45, file: !43, line: 105, baseType: !50, size: 64, offset: 64) +!50 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !51, size: 64) +!51 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "__darwin_pthread_handler_rec", file: !43, line: 57, size: 192, elements: !52) +!52 = !{!53, !57, !58} +!53 = !DIDerivedType(tag: DW_TAG_member, name: "__routine", scope: !51, file: !43, line: 58, baseType: !54, size: 64) +!54 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !55, size: 64) +!55 = !DISubroutineType(types: !56) +!56 = !{null, !5} +!57 = !DIDerivedType(tag: DW_TAG_member, name: "__arg", scope: !51, file: !43, line: 59, baseType: !5, size: 64, offset: 64) +!58 = !DIDerivedType(tag: DW_TAG_member, name: "__next", scope: !51, file: !43, line: 60, baseType: !50, size: 64, offset: 128) +!59 = !DIDerivedType(tag: DW_TAG_member, name: "__opaque", scope: !45, file: !43, line: 106, baseType: !60, size: 65408, offset: 128) +!60 = !DICompositeType(tag: DW_TAG_array_type, baseType: !61, size: 65408, elements: !62) +!61 = !DIBasicType(name: "char", size: 8, encoding: DW_ATE_signed_char) +!62 = !{!63} +!63 = !DISubrange(count: 8176) +!64 = !DILocation(line: 18, column: 15, scope: !36) +!65 = !DILocalVariable(name: "t2", scope: !36, file: !7, line: 18, type: !40) +!66 = !DILocation(line: 18, column: 19, scope: !36) +!67 = !DILocation(line: 19, column: 7, scope: !36) +!68 = !DILocation(line: 20, column: 5, scope: !36) +!69 = !DILocation(line: 21, column: 5, scope: !36) diff --git a/ui/src/main/java/com/dat3m/ui/options/OptionsPane.java b/ui/src/main/java/com/dat3m/ui/options/OptionsPane.java index 6e4ff895a6..b97ddc43fb 100644 --- a/ui/src/main/java/com/dat3m/ui/options/OptionsPane.java +++ b/ui/src/main/java/com/dat3m/ui/options/OptionsPane.java @@ -3,6 +3,7 @@ import com.dat3m.dartagnan.configuration.Arch; import com.dat3m.dartagnan.configuration.Method; import com.dat3m.dartagnan.configuration.Property; +import com.dat3m.dartagnan.configuration.ProgressModel; import com.dat3m.ui.button.ClearButton; import com.dat3m.ui.button.TestButton; import com.dat3m.ui.options.utils.ControlCode; @@ -33,6 +34,7 @@ public class OptionsPane extends JPanel implements ActionListener { private final Selector methodPane; private final Selector solverPane; private final Selector propertyPane; + private final Selector progressPane; private final Selector targetPane; @@ -66,6 +68,9 @@ public OptionsPane() { targetPane = new Selector<>(Arch.orderedValues(), ControlCode.TARGET); targetPane.setSelectedItem(Arch.getDefault()); + progressPane = new Selector<>(ProgressModel.orderedValues(), ControlCode.PROGRESS); + progressPane.setSelectedItem(ProgressModel.getDefault()); + boundField = new BoundField(); timeoutField = new TimeoutField(); showViolationField = new JRadioButton(); @@ -94,6 +99,7 @@ private void bindListeners() { timeoutField.addActionListener(this); clearButton.addActionListener(this); propertyPane.addActionListener(this); + progressPane.addActionListener(this); } public JButton getTestButton() { @@ -114,7 +120,8 @@ public UiOptions getOptions() { Method method = (Method) methodPane.getSelectedItem(); Solvers solver = (Solvers) solverPane.getSelectedItem(); EnumSet properties = EnumSet.of((Property) propertyPane.getSelectedItem()); - return new UiOptions(target, method, bound, solver, timeout, showViolationGraph, cflags, config, properties); + ProgressModel progress = (ProgressModel) progressPane.getSelectedItem(); + return new UiOptions(target, method, bound, solver, timeout, showViolationGraph, cflags, config, properties, progress); } private void mkGrid() { @@ -150,7 +157,7 @@ private void mkGrid() { JSplitPane graphPane = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT); graphPane.setDividerSize(0); - JComponent[] panes = { targetPane, methodPane, solverPane, propertyPane, boundsPane, showViolationPane, configPane, + JComponent[] panes = { targetPane, methodPane, solverPane, propertyPane, progressPane, boundsPane, showViolationPane, configPane, cflagsPane, testButton, clearButton, graphPane, scrollConsole }; Iterator it = Arrays.asList(panes).iterator(); JComponent current = iconPane; diff --git a/ui/src/main/java/com/dat3m/ui/options/utils/ControlCode.java b/ui/src/main/java/com/dat3m/ui/options/utils/ControlCode.java index 0535a2ba67..f344f0a0ee 100644 --- a/ui/src/main/java/com/dat3m/ui/options/utils/ControlCode.java +++ b/ui/src/main/java/com/dat3m/ui/options/utils/ControlCode.java @@ -2,7 +2,7 @@ public enum ControlCode { - TASK, TARGET, BOUND, TIMEOUT, TEST, CLEAR, METHOD, SOLVER, PROPERTY; + TASK, TARGET, BOUND, TIMEOUT, TEST, CLEAR, METHOD, SOLVER, PROPERTY, PROGRESS; @Override public String toString() { @@ -16,6 +16,7 @@ public String toString() { case METHOD -> "Method"; case SOLVER -> "Solver"; case PROPERTY -> "Property"; + case PROGRESS -> "Forward Progress"; }; } @@ -30,6 +31,7 @@ public String actionCommand() { case METHOD -> "control_command_method"; case SOLVER -> "control_command_solver"; case PROPERTY -> "control_command_property"; + case PROGRESS -> "control_command_progress"; }; } } diff --git a/ui/src/main/java/com/dat3m/ui/result/ReachabilityResult.java b/ui/src/main/java/com/dat3m/ui/result/ReachabilityResult.java index 890aa30d4b..d3073c490e 100644 --- a/ui/src/main/java/com/dat3m/ui/result/ReachabilityResult.java +++ b/ui/src/main/java/com/dat3m/ui/result/ReachabilityResult.java @@ -81,6 +81,7 @@ private void run() { .withBound(options.bound()) .withSolverTimeout(options.timeout()) .withTarget(arch) + .withProgressModel(options.progress()) .build(program, wmm, options.properties()); t.start(); diff --git a/ui/src/main/java/com/dat3m/ui/utils/UiOptions.java b/ui/src/main/java/com/dat3m/ui/utils/UiOptions.java index 993205b492..8d865c6685 100644 --- a/ui/src/main/java/com/dat3m/ui/utils/UiOptions.java +++ b/ui/src/main/java/com/dat3m/ui/utils/UiOptions.java @@ -2,13 +2,14 @@ import com.dat3m.dartagnan.configuration.Arch; import com.dat3m.dartagnan.configuration.Method; +import com.dat3m.dartagnan.configuration.ProgressModel; import com.dat3m.dartagnan.configuration.Property; import org.sosy_lab.java_smt.SolverContextFactory.Solvers; import java.util.EnumSet; public record UiOptions(Arch target, Method method, int bound, Solvers solver, int timeout, boolean showWitness, - String cflags, String config, EnumSet properties) { + String cflags, String config, EnumSet properties, ProgressModel progress) { } \ No newline at end of file