diff options
| author | Michael Williamson <mike@zwobble.org> | 2023-06-14 19:37:57 +0100 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2023-06-14 19:37:57 +0100 |
| commit | 2d63d2471c93613172f973521c05086ec1221b4b (patch) | |
| tree | 8f23331484dca5e9720e66829294b2d37daf6f81 /src/test/java | |
| parent | 825e851df3bb56e00d6d434bb0491ffd4112cead (diff) | |
Add LlvmIntToPtr instruction
Diffstat (limited to 'src/test/java')
| -rw-r--r-- | src/test/java/org/shedlang/compiler/backends/llvm/ir/LlvmIrSerializerInstructionTests.java | 14 | ||||
| -rw-r--r-- | src/test/java/org/shedlang/compiler/backends/llvm/ir/ast/LlvmIr.java | 28 |
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); - } } |
