aboutsummaryrefslogtreecommitdiff
path: root/src/test/java
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2023-06-12 21:34:39 +0100
committerMichael Williamson <mike@zwobble.org>2023-06-12 21:34:39 +0100
commitfa8b7447149e249e2e938757822dee19f569b9b8 (patch)
tree43e22aaf3bdc45e4994419cc3193722e5cd17a4f /src/test/java
parentf0e7b287bb6aa9faf2de68b76889b3fc279e5584 (diff)
Add LLVM operand ptrtoint
Diffstat (limited to 'src/test/java')
-rw-r--r--src/test/java/org/shedlang/compiler/backends/llvm/ir/LlvmIrSerializerOperandsTests.java13
-rw-r--r--src/test/java/org/shedlang/compiler/backends/llvm/ir/ast/LlvmIr.java13
2 files changed, 26 insertions, 0 deletions
diff --git a/src/test/java/org/shedlang/compiler/backends/llvm/ir/LlvmIrSerializerOperandsTests.java b/src/test/java/org/shedlang/compiler/backends/llvm/ir/LlvmIrSerializerOperandsTests.java
index 0686b989..1d6134e3 100644
--- a/src/test/java/org/shedlang/compiler/backends/llvm/ir/LlvmIrSerializerOperandsTests.java
+++ b/src/test/java/org/shedlang/compiler/backends/llvm/ir/LlvmIrSerializerOperandsTests.java
@@ -39,6 +39,19 @@ public class LlvmIrSerializerOperandsTests {
}
@Test
+ public void ptrToIntIsSerialized() {
+ var operand = LlvmIr.ptrToInt(
+ LlvmTypes.pointer(LlvmTypes.INT_8),
+ LlvmIr.variableLocal("x"),
+ LlvmTypes.INT_64
+ );
+
+ var result = serializeToString(operand, LlvmIrSerializer::serializeOperand);
+
+ assertThat(result, equalTo("ptrtoint (i8 * $x to i64)"));
+ }
+
+ @Test
public void arrayIsSerializedAsTypedOperandsInArray() {
var operand = LlvmIr.operandArray(
LlvmTypes.INT_64,
diff --git a/src/test/java/org/shedlang/compiler/backends/llvm/ir/ast/LlvmIr.java b/src/test/java/org/shedlang/compiler/backends/llvm/ir/ast/LlvmIr.java
index 224f1c5d..7ded22d8 100644
--- a/src/test/java/org/shedlang/compiler/backends/llvm/ir/ast/LlvmIr.java
+++ b/src/test/java/org/shedlang/compiler/backends/llvm/ir/ast/LlvmIr.java
@@ -3,6 +3,7 @@ package org.shedlang.compiler.backends.llvm.ir.ast;
import org.shedlang.compiler.backends.llvm.ir.ast.instructions.*;
import org.shedlang.compiler.backends.llvm.ir.ast.operands.*;
import org.shedlang.compiler.backends.llvm.ir.ast.types.LlvmType;
+import org.shedlang.compiler.backends.llvm.ir.ast.types.LlvmTypePointer;
import java.util.List;
import java.util.Optional;
@@ -54,6 +55,18 @@ public class LlvmIr {
return new LlvmParam(type, name);
}
+ public static LlvmOperand ptrToInt(
+ LlvmTypePointer sourceType,
+ LlvmOperand operand,
+ LlvmType targetType
+ ) {
+ return new LlvmOperandPtrToInt(
+ sourceType,
+ operand,
+ targetType
+ );
+ }
+
public static LlvmReturn returnValue(LlvmType type, LlvmOperand value) {
return new LlvmReturn(type, value);
}