diff options
| author | Michael Williamson <mike@zwobble.org> | 2023-06-17 00:46:51 +0100 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2023-06-17 00:47:00 +0100 |
| commit | aa5297791ff229c54931b79e9781ebb03b5e079c (patch) | |
| tree | d78de4f240c8bf29d4f4b6047d7642acd7a38d58 /src/test/java | |
| parent | e0b8a6d542817ca464c46033e0c6323c23d2aeac (diff) | |
Serialize LLVM function definitions
Diffstat (limited to 'src/test/java')
| -rw-r--r-- | src/test/java/org/shedlang/compiler/backends/llvm/ir/LlvmIrSerializerFunctionDefinitionTests.java | 28 |
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 + } """)); } } |
