Skip to content

Commit ed948ed

Browse files
committed
mv default alignmentExpr to TypeFactory
1 parent cb79377 commit ed948ed

File tree

6 files changed

+18
-16
lines changed

6 files changed

+18
-16
lines changed

dartagnan/src/main/java/com/dat3m/dartagnan/expression/ExpressionFactory.java

+2-6
Original file line numberDiff line numberDiff line change
@@ -27,18 +27,14 @@ public final class ExpressionFactory {
2727
private final BooleanType booleanType = types.getBooleanType();
2828
private final BoolLiteral falseConstant = new BoolLiteral(booleanType, false);
2929
private final BoolLiteral trueConstant = new BoolLiteral(booleanType, true);
30-
private final Expression defaultAlignment = makeValue(8, types.getArchType());
3130

32-
private ExpressionFactory() {}
31+
private ExpressionFactory() {
32+
}
3333

3434
public static ExpressionFactory getInstance() {
3535
return instance;
3636
}
3737

38-
public Expression getDefaultAlignment() {
39-
return defaultAlignment;
40-
}
41-
4238
// -----------------------------------------------------------------------------------------------------------------
4339
// Boolean
4440

dartagnan/src/main/java/com/dat3m/dartagnan/expression/type/TypeFactory.java

+6
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
package com.dat3m.dartagnan.expression.type;
22

3+
import com.dat3m.dartagnan.expression.Expression;
4+
import com.dat3m.dartagnan.expression.ExpressionFactory;
35
import com.dat3m.dartagnan.expression.Type;
46
import com.dat3m.dartagnan.utils.Normalizer;
57
import com.google.common.math.IntMath;
@@ -34,6 +36,10 @@ public static TypeFactory getInstance() {
3436
return instance;
3537
}
3638

39+
public Expression getDefaultAlignment() {
40+
return ExpressionFactory.getInstance().makeValue(getMemorySizeInBytes(getArchType()), getArchType());
41+
}
42+
3743
public BooleanType getBooleanType() {
3844
return booleanType;
3945
}

dartagnan/src/main/java/com/dat3m/dartagnan/parsers/program/visitors/spirv/VisitorOpsFunction.java

+1-2
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@
1313
import com.dat3m.dartagnan.parsers.program.visitors.spirv.builders.ProgramBuilder;
1414
import com.dat3m.dartagnan.parsers.program.visitors.spirv.decorations.Alignment;
1515
import com.dat3m.dartagnan.parsers.program.visitors.spirv.helpers.HelperInputs;
16-
import com.dat3m.dartagnan.parsers.program.visitors.spirv.helpers.HelperTypes;
1716
import com.dat3m.dartagnan.program.Function;
1817
import com.dat3m.dartagnan.program.Register;
1918
import com.dat3m.dartagnan.program.event.EventFactory;
@@ -193,7 +192,7 @@ private void checkFunctionType(String id, Function function, Type type) {
193192
private Expression createEntryPointParameter(String id, Type type) {
194193
Integer alignmentNum = alignment.getValue(id);
195194
Expression alignmentExpr = alignmentNum == null ?
196-
expressions.getDefaultAlignment() : expressions.makeValue(alignmentNum, types.getArchType());
195+
types.getDefaultAlignment() : expressions.makeValue(alignmentNum, types.getArchType());
197196
Expression value = createEntryPointParameterValue(id, type);
198197
if (type instanceof ScopedPointerType pType) {
199198
String ptrId = HelperInputs.castPointerId(id);

dartagnan/src/main/java/com/dat3m/dartagnan/parsers/program/visitors/spirv/VisitorOpsMemory.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -123,7 +123,7 @@ public Event visitOpVariable(SpirvParser.OpVariableContext ctx) {
123123
Type type = pointerType.getPointedType();
124124
Integer alignmentNum = alignment.getValue(id);
125125
Expression alignmentExpr = alignmentNum == null ?
126-
expressions.getDefaultAlignment() : expressions.makeValue(alignmentNum, types.getArchType());
126+
types.getDefaultAlignment() : expressions.makeValue(alignmentNum, types.getArchType());
127127
if (alignmentNum != null) {
128128
type = HelperTypes.getAlignedType(type, alignmentNum);
129129
}

dartagnan/src/main/java/com/dat3m/dartagnan/program/memory/Memory.java

+3-2
Original file line numberDiff line numberDiff line change
@@ -16,12 +16,13 @@ public class Memory {
1616
private final ArrayList<MemoryObject> objects = new ArrayList<>();
1717
private final Type ptrType = TypeFactory.getInstance().getPointerType();
1818
private final IntegerType archType = TypeFactory.getInstance().getArchType();
19+
private final TypeFactory types = TypeFactory.getInstance();
1920

2021
private int nextIndex = 1;
2122

2223
// Generates a new, statically allocated memory object.
2324
public MemoryObject allocate(int size) {
24-
final Expression defaultAlignment = ExpressionFactory.getInstance().getDefaultAlignment();
25+
final Expression defaultAlignment = types.getDefaultAlignment();
2526
return allocate(size, defaultAlignment);
2627
}
2728

@@ -43,7 +44,7 @@ public MemoryObject allocate(Alloc allocationSite) {
4344
}
4445

4546
public VirtualMemoryObject allocateVirtual(int size, boolean generic, VirtualMemoryObject alias) {
46-
return allocateVirtual(size, generic, ExpressionFactory.getInstance().getDefaultAlignment(), alias);
47+
return allocateVirtual(size, generic, types.getDefaultAlignment(), alias);
4748
}
4849

4950
public VirtualMemoryObject allocateVirtual(int size, boolean generic, Expression alignment,

dartagnan/src/test/java/com/dat3m/dartagnan/parsers/program/visitors/spirv/VisitorOpsMemoryTest.java

+5-5
Original file line numberDiff line numberDiff line change
@@ -233,8 +233,8 @@ public void testAlignedVariable() {
233233
builder.mockVectorType("%arr", "%int", 3);
234234
builder.mockPtrType("%int_ptr", "%int", "Uniform");
235235
builder.mockPtrType("%arr_ptr", "%arr", "Uniform");
236-
builder.mockPointerAlignment("%v1", 128);
237-
builder.mockPointerAlignment("%v2", 512);
236+
builder.mockPointerAlignment("%v1", 32);
237+
builder.mockPointerAlignment("%v2", 64);
238238

239239

240240
// when
@@ -243,11 +243,11 @@ public void testAlignedVariable() {
243243
// then
244244
ScopedPointerVariable v1 = (ScopedPointerVariable) builder.getExpression("%v1");
245245
assertNotNull(v1);
246-
assertEquals(128, v1.getAddress().getKnownAlignment());
247-
assertEquals(128, ((IntegerType) v1.getInnerType()).getBitWidth());
246+
assertEquals(32, v1.getAddress().getKnownAlignment());
247+
assertEquals(256, ((IntegerType) v1.getInnerType()).getBitWidth());
248248
ScopedPointerVariable v2 = (ScopedPointerVariable) builder.getExpression("%v2");
249249
assertNotNull(v2);
250-
assertEquals(512, ((AggregateType) v2.getInnerType()).getFields().get(1).offset());
250+
assertEquals(64, ((AggregateType) v2.getInnerType()).getFields().get(1).offset());
251251
}
252252

253253
@Test

0 commit comments

Comments
 (0)