From d7f7d093a003dc090b9658733c9c86da5b130cf5 Mon Sep 17 00:00:00 2001 From: Natalia Gavrilenko Date: Fri, 9 Aug 2024 09:25:08 +0200 Subject: [PATCH] Added comments Co-authored-by: Natalia Gavrilenko --- .../parsers/program/visitors/spirv/decorations/BuiltIn.java | 1 + .../program/visitors/spirv/utils/MemoryTransformer.java | 3 +++ .../main/java/com/dat3m/dartagnan/program/memory/Location.java | 1 + 3 files changed, 5 insertions(+) diff --git a/dartagnan/src/main/java/com/dat3m/dartagnan/parsers/program/visitors/spirv/decorations/BuiltIn.java b/dartagnan/src/main/java/com/dat3m/dartagnan/parsers/program/visitors/spirv/decorations/BuiltIn.java index d26e1b8eb0..23341ae7ef 100644 --- a/dartagnan/src/main/java/com/dat3m/dartagnan/parsers/program/visitors/spirv/decorations/BuiltIn.java +++ b/dartagnan/src/main/java/com/dat3m/dartagnan/parsers/program/visitors/spirv/decorations/BuiltIn.java @@ -74,6 +74,7 @@ public Expression getDecoration(String id, Type type) { private Expression getDecorationExpressions(String id, Type type) { return switch (mapping.get(id)) { + // BuiltIn decorations according to the Vulkan API case "SubgroupLocalInvocationId" -> makeScalar(id, type, tid % grid.sgSize()); case "LocalInvocationId" -> makeArray(id, type, tid % grid.wgSize(), 0, 0); case "LocalInvocationIndex" -> makeScalar(id, type, tid % grid.wgSize()); // scalar of LocalInvocationId diff --git a/dartagnan/src/main/java/com/dat3m/dartagnan/parsers/program/visitors/spirv/utils/MemoryTransformer.java b/dartagnan/src/main/java/com/dat3m/dartagnan/parsers/program/visitors/spirv/utils/MemoryTransformer.java index 0cd8f18df0..16b4062580 100644 --- a/dartagnan/src/main/java/com/dat3m/dartagnan/parsers/program/visitors/spirv/utils/MemoryTransformer.java +++ b/dartagnan/src/main/java/com/dat3m/dartagnan/parsers/program/visitors/spirv/utils/MemoryTransformer.java @@ -73,15 +73,18 @@ public Expression visitRegister(Register register) { public Expression visitMemoryObject(MemoryObject memObj) { String storageClass = pointerMapping.get(memObj).getScopeId(); return switch (storageClass) { + // Device-level memory (keep the same instance) case Tag.Spirv.SC_UNIFORM_CONSTANT, Tag.Spirv.SC_UNIFORM, Tag.Spirv.SC_OUTPUT, Tag.Spirv.SC_PUSH_CONSTANT, Tag.Spirv.SC_STORAGE_BUFFER, Tag.Spirv.SC_PHYS_STORAGE_BUFFER -> memObj; + // Private memory (copy for each new thread) case Tag.Spirv.SC_PRIVATE, Tag.Spirv.SC_FUNCTION, Tag.Spirv.SC_INPUT -> applyMapping(memObj, 0); + // Workgroup-level memory (copy for each new workgroup) case Tag.Spirv.SC_WORKGROUP -> applyMapping(memObj, 2); default -> throw new UnsupportedOperationException( "Unsupported storage class " + storageClass); diff --git a/dartagnan/src/main/java/com/dat3m/dartagnan/program/memory/Location.java b/dartagnan/src/main/java/com/dat3m/dartagnan/program/memory/Location.java index 64bc6c4b5e..094ecf5592 100644 --- a/dartagnan/src/main/java/com/dat3m/dartagnan/program/memory/Location.java +++ b/dartagnan/src/main/java/com/dat3m/dartagnan/program/memory/Location.java @@ -5,6 +5,7 @@ import com.dat3m.dartagnan.expression.Type; import com.dat3m.dartagnan.expression.base.LeafExpressionBase; +// TODO: Should be replaced with a Pointer class public class Location extends LeafExpressionBase { private final String name;