aboutsummaryrefslogtreecommitdiff
path: root/src/test/java
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2023-06-17 00:46:51 +0100
committerMichael Williamson <mike@zwobble.org>2023-06-17 00:47:00 +0100
commitaa5297791ff229c54931b79e9781ebb03b5e079c (patch)
treed78de4f240c8bf29d4f4b6047d7642acd7a38d58 /src/test/java
parente0b8a6d542817ca464c46033e0c6323c23d2aeac (diff)
Serialize LLVM function definitions
Diffstat (limited to 'src/test/java')
-rw-r--r--src/test/java/org/shedlang/compiler/backends/llvm/ir/LlvmIrSerializerFunctionDefinitionTests.java28
1 files changed, 26 insertions, 2 deletions
diff --git a/src/test/java/org/shedlang/compiler/backends/llvm/ir/LlvmIrSerializerFunctionDefinitionTests.java b/src/test/java/org/shedlang/compiler/backends/llvm/ir/LlvmIrSerializerFunctionDefinitionTests.java
index 4e1f23bc..c5f62da1 100644
--- a/src/test/java/org/shedlang/compiler/backends/llvm/ir/LlvmIrSerializerFunctionDefinitionTests.java
+++ b/src/test/java/org/shedlang/compiler/backends/llvm/ir/LlvmIrSerializerFunctionDefinitionTests.java
@@ -16,14 +16,38 @@ public class LlvmIrSerializerFunctionDefinitionTests {
public void canSerializeFunctionDefinitions() {
var definition = new LlvmFunctionDefinition(
"f",
- LlvmTypes.VOID,
+ LlvmTypes.INT_32,
List.of(LlvmIr.param(LlvmTypes.INT_64, "x"), LlvmIr.param(LlvmTypes.INT_64, "y")),
- List.of()
+ List.of(
+ LlvmIr.basicBlock(
+ List.of(
+ LlvmIr.add(
+ LlvmIr.variableLocal("a"),
+ LlvmTypes.INT_64,
+ LlvmIr.variableLocal("x"),
+ LlvmIr.variableLocal("y")
+ ),
+
+ LlvmIr.add(
+ LlvmIr.variableLocal("b"),
+ LlvmTypes.INT_64,
+ LlvmIr.variableLocal("y"),
+ LlvmIr.variableLocal("x")
+ )
+ ),
+ LlvmIr.returnValue(LlvmTypes.INT_32, LlvmIr.operandInt(42))
+ )
+ )
);
var result = serializeToString(definition, LlvmIrSerializer::serializeTopLevelEntity);
assertThat(result, equalTo("""
+ define i32 @f(i64 %x, i64 %y) {
+ $a = add i64 $x, $y
+ $b = add i64 $y, $x
+ ret i32 42
+ }
"""));
}
}