aboutsummaryrefslogtreecommitdiff
path: root/src/test/java
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2023-06-14 19:37:57 +0100
committerMichael Williamson <mike@zwobble.org>2023-06-14 19:37:57 +0100
commit2d63d2471c93613172f973521c05086ec1221b4b (patch)
tree8f23331484dca5e9720e66829294b2d37daf6f81 /src/test/java
parent825e851df3bb56e00d6d434bb0491ffd4112cead (diff)
Add LlvmIntToPtr instruction
Diffstat (limited to 'src/test/java')
-rw-r--r--src/test/java/org/shedlang/compiler/backends/llvm/ir/LlvmIrSerializerInstructionTests.java14
-rw-r--r--src/test/java/org/shedlang/compiler/backends/llvm/ir/ast/LlvmIr.java28
2 files changed, 33 insertions, 9 deletions
diff --git a/src/test/java/org/shedlang/compiler/backends/llvm/ir/LlvmIrSerializerInstructionTests.java b/src/test/java/org/shedlang/compiler/backends/llvm/ir/LlvmIrSerializerInstructionTests.java
index f49994f2..a48260e7 100644
--- a/src/test/java/org/shedlang/compiler/backends/llvm/ir/LlvmIrSerializerInstructionTests.java
+++ b/src/test/java/org/shedlang/compiler/backends/llvm/ir/LlvmIrSerializerInstructionTests.java
@@ -79,6 +79,20 @@ public class LlvmIrSerializerInstructionTests {
}
@Test
+ public void intToPtrIsSerialized() {
+ var instruction = LlvmIr.intToPtr(
+ LlvmIr.variableLocal("x"),
+ LlvmTypes.INT_64,
+ LlvmIr.variableLocal("y"),
+ LlvmTypes.pointer(LlvmTypes.INT_8)
+ );
+
+ var result = serializeToString(instruction, LlvmIrSerializer::serializeInstruction);
+
+ assertThat(result, equalTo("$x = inttoptr i64 $y to i8 *"));
+ }
+
+ @Test
public void storeIsSerialized() {
var instruction = LlvmIr.store(
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 24a9f44a..3f65165e 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
@@ -4,6 +4,7 @@ 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 org.shedlang.compiler.backends.llvm.ir.ast.types.LlvmTypeScalar;
import java.util.List;
import java.util.Optional;
@@ -36,6 +37,15 @@ public class LlvmIr {
return new LlvmBasicBlock(Optional.of(name), instructions, terminator);
}
+ public static LlvmCall call(
+ LlvmVariable target,
+ LlvmType returnType,
+ LlvmOperand functionPointer,
+ List<LlvmTypedOperand> args
+ ) {
+ return new LlvmCall(target, returnType, functionPointer, args);
+ }
+
public static LlvmGetElementPtr getElementPtr(
LlvmVariable target,
LlvmTypePointer pointerType,
@@ -45,6 +55,15 @@ public class LlvmIr {
return new LlvmGetElementPtr(target, pointerType, pointer, indexes);
}
+ public static LlvmIntToPtr intToPtr(
+ LlvmVariable target,
+ LlvmTypeScalar sourceType,
+ LlvmOperand value,
+ LlvmTypePointer targetType
+ ) {
+ return new LlvmIntToPtr(target, sourceType, value, targetType);
+ }
+
public static LlvmOperand operandArray(
LlvmType type,
List<LlvmOperand> elements
@@ -103,13 +122,4 @@ public class LlvmIr {
public static LlvmVariableLocal variableLocal(String name) {
return new LlvmVariableLocal(name);
}
-
- public static LlvmCall call(
- LlvmVariable target,
- LlvmType returnType,
- LlvmOperand functionPointer,
- List<LlvmTypedOperand> args
- ) {
- return new LlvmCall(target, returnType, functionPointer, args);
- }
}