diff options
| author | Michael Williamson <mike@zwobble.org> | 2023-07-14 23:44:11 +0100 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2023-07-14 23:44:11 +0100 |
| commit | efa34e180428f0161c49cef814aacadbe3e1166d (patch) | |
| tree | a591edbc1ef11fb2603426aa8111a67bf01a98d6 /src/test/java | |
| parent | 7e18cdc5a90b2d713af44ee6720bea947988345c (diff) | |
Add LLVM phi instructions
Diffstat (limited to 'src/test/java')
| -rw-r--r-- | src/test/java/org/shedlang/compiler/backends/llvm/ir/LlvmIrSerializerInstructionTests.java | 16 | ||||
| -rw-r--r-- | src/test/java/org/shedlang/compiler/backends/llvm/ir/ast/LlvmIr.java | 15 |
2 files changed, 31 insertions, 0 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 eb55a95c..83bf54bb 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 @@ -157,6 +157,22 @@ public class LlvmIrSerializerInstructionTests { } @Test + public void phiIsSerialized() throws IOException { + var instruction = LlvmIr.phi( + LlvmIr.variableLocal("target"), + LlvmTypes.INT_64, + List.of( + LlvmIr.phiPair(LlvmIr.variableLocal("x1"), LlvmIr.variableLocal("p1")), + LlvmIr.phiPair(LlvmIr.variableLocal("x2"), LlvmIr.variableLocal("p2")) + ) + ); + + var result = serializeToString(instruction, LlvmIrSerializer::serializeInstruction); + + assertThat(result, equalTo("%target = phi i64 [ %x1, %p1 ], [ %x2, %p2 ]")); + } + + @Test public void ptrToIntIsSerialized() throws IOException { var instruction = LlvmIr.ptrToInt( LlvmIr.variableLocal("x"), 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 5d957365..8bd93a6f 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 @@ -134,6 +134,21 @@ public class LlvmIr { return new LlvmParam(type, name); } + public static LlvmPhi phi( + LlvmVariable target, + LlvmType type, + List<LlvmPhiPair> pairs + ) { + return new LlvmPhi(target, type, pairs); + } + + public static LlvmPhiPair phiPair( + LlvmOperand value, + LlvmVariableLocal predecessorBasicBlockName + ) { + return new LlvmPhiPair(value, predecessorBasicBlockName); + } + public static LlvmPtrToInt ptrToInt( LlvmVariable target, LlvmOperand value, |
