From ae0f6f8ce9a82a17f44e31f21e437bd66a910f23 Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Mon, 12 Jun 2023 20:36:35 +0100 Subject: Add LLVM array operand --- .../llvm/ir/LlvmIrSerializerOperandsTests.java | 18 ++++++++++++++++++ .../shedlang/compiler/backends/llvm/ir/ast/LlvmIr.java | 7 +++++++ 2 files changed, 25 insertions(+) (limited to 'src/test/java') 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 4d3fa350..64221e38 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 @@ -4,6 +4,8 @@ import org.junit.jupiter.api.Test; import org.shedlang.compiler.backends.llvm.ir.ast.LlvmIr; import org.shedlang.compiler.backends.llvm.ir.ast.types.LlvmTypes; +import java.util.List; + import static org.shedlang.compiler.backends.llvm.ir.LlvmIrSerializerTesting.serializeToString; import static org.zwobble.precisely.AssertThat.assertThat; import static org.zwobble.precisely.Matchers.equalTo; @@ -36,6 +38,22 @@ public class LlvmIrSerializerOperandsTests { assertThat(result, equalTo("@x")); } + @Test + public void arrayIsSerializedAsTypedOperandsInArray() { + var operand = LlvmIr.operandArray( + LlvmTypes.INT_64, + List.of( + LlvmIr.operandInt(1), + LlvmIr.operandInt(2), + LlvmIr.operandInt(3) + ) + ); + + var result = serializeToString(operand, LlvmIrSerializer::serializeOperand); + + assertThat(result, equalTo("[i64 1, i64 2, i64 3]")); + } + @Test public void typedOperandHasTypeAndValue() { var operand = LlvmIr.typedOperand(LlvmTypes.INT_64, LlvmIr.operandInt(42)); 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 470406e4..887bc655 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 @@ -35,6 +35,13 @@ public class LlvmIr { return new LlvmBasicBlock(Optional.of(name), instructions, terminator); } + public static LlvmOperand operandArray( + LlvmType type, + List elements + ) { + return new LlvmOperandArray(type, elements); + } + public static LlvmOperand operandInt(long value) { return new LlvmOperandInt(value); } -- cgit v1.2.3