aboutsummaryrefslogtreecommitdiff
path: root/src/test/java
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2023-06-17 00:29:43 +0100
committerMichael Williamson <mike@zwobble.org>2023-06-17 00:29:43 +0100
commit8bec9a955dba7ef7c178637844887de76590ebe3 (patch)
tree6354ecbef9059e4a7bc3ba71372dea03a866e639 /src/test/java
parent6c5c070b4781ceffc843d72465ac8e928dac5ad3 (diff)
Add LLVM ptrtoint 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/LlvmIrSerializerOperandsTests.java2
-rw-r--r--src/test/java/org/shedlang/compiler/backends/llvm/ir/ast/LlvmIr.java25
3 files changed, 32 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 3b091ae7..eaf0252b 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
@@ -106,6 +106,20 @@ public class LlvmIrSerializerInstructionTests {
}
@Test
+ public void ptrToIntIsSerialized() {
+ var instruction = LlvmIr.ptrToInt(
+ LlvmIr.variableLocal("x"),
+ LlvmTypes.pointer(LlvmTypes.INT_8),
+ LlvmIr.variableLocal("y"),
+ LlvmTypes.INT_64
+ );
+
+ var result = serializeToString(instruction, LlvmIrSerializer::serializeInstruction);
+
+ assertThat(result, equalTo("$x = ptrtoint i8 * $y to i64"));
+ }
+
+ @Test
public void storeIsSerialized() {
var instruction = LlvmIr.store(
LlvmTypes.INT_64,
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 f8ff5921..86e4c516 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
@@ -49,7 +49,7 @@ public class LlvmIrSerializerOperandsTests {
@Test
public void ptrToIntIsSerialized() {
- var operand = LlvmIr.ptrToInt(
+ var operand = LlvmIr.operandPtrToInt(
LlvmTypes.pointer(LlvmTypes.INT_8),
LlvmIr.variableLocal("x"),
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 25dbe833..eb28440c 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
@@ -87,6 +87,18 @@ public class LlvmIr {
return new LlvmOperandNull();
}
+ public static LlvmOperand operandPtrToInt(
+ LlvmTypePointer sourceType,
+ LlvmOperand operand,
+ LlvmType targetType
+ ) {
+ return new LlvmOperandPtrToInt(
+ sourceType,
+ operand,
+ targetType
+ );
+ }
+
public static LlvmOperand operandStructure(List<LlvmTypedOperand> elements) {
return new LlvmOperandStructure(elements);
}
@@ -95,16 +107,13 @@ public class LlvmIr {
return new LlvmParam(type, name);
}
- public static LlvmOperand ptrToInt(
+ public static LlvmPtrToInt ptrToInt(
+ LlvmVariable target,
LlvmTypePointer sourceType,
- LlvmOperand operand,
- LlvmType targetType
+ LlvmOperand value,
+ LlvmTypeScalar targetType
) {
- return new LlvmOperandPtrToInt(
- sourceType,
- operand,
- targetType
- );
+ return new LlvmPtrToInt(target, sourceType, value, targetType);
}
public static LlvmReturn returnValue(LlvmType type, LlvmOperand value) {