diff options
| author | Michael Williamson <mike@zwobble.org> | 2023-06-12 21:34:39 +0100 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2023-06-12 21:34:39 +0100 |
| commit | fa8b7447149e249e2e938757822dee19f569b9b8 (patch) | |
| tree | 43e22aaf3bdc45e4994419cc3193722e5cd17a4f /src/test/java | |
| parent | f0e7b287bb6aa9faf2de68b76889b3fc279e5584 (diff) | |
Add LLVM operand ptrtoint
Diffstat (limited to 'src/test/java')
| -rw-r--r-- | src/test/java/org/shedlang/compiler/backends/llvm/ir/LlvmIrSerializerOperandsTests.java | 13 | ||||
| -rw-r--r-- | src/test/java/org/shedlang/compiler/backends/llvm/ir/ast/LlvmIr.java | 13 |
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); } |
