diff options
| author | Michael Williamson <mike@zwobble.org> | 2023-06-12 20:39:52 +0100 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2023-06-12 20:39:52 +0100 |
| commit | c359976e1f9456248c1d1cbebf8c58db5379709c (patch) | |
| tree | 2afd767a513214be57f0856a58c01a33b422245f /src/main/java | |
| parent | ae0f6f8ce9a82a17f44e31f21e437bd66a910f23 (diff) | |
Add LLVM operand structure
Diffstat (limited to 'src/main/java')
3 files changed, 19 insertions, 4 deletions
diff --git a/src/main/java/org/shedlang/compiler/backends/llvm/ir/LlvmIrSerializer.java b/src/main/java/org/shedlang/compiler/backends/llvm/ir/LlvmIrSerializer.java index 2e5072ae..4309df32 100644 --- a/src/main/java/org/shedlang/compiler/backends/llvm/ir/LlvmIrSerializer.java +++ b/src/main/java/org/shedlang/compiler/backends/llvm/ir/LlvmIrSerializer.java @@ -65,15 +65,22 @@ public class LlvmIrSerializer { builder.append(" "); serializeOperand(element, builder); }, - () -> { - builder.append(", "); - } + () -> builder.append(", ") ); builder.append("]"); } case LlvmOperandInt operandInt -> { builder.append(operandInt.value()); } + case LlvmOperandStructure structure -> { + builder.append("{"); + forEachInterspersed( + structure.elements(), + element -> serializeTypedOperand(element, builder), + () -> builder.append(", ") + ); + builder.append("}"); + } case LlvmVariable variable -> { serializeVariable(variable, builder); } diff --git a/src/main/java/org/shedlang/compiler/backends/llvm/ir/ast/operands/LlvmOperand.java b/src/main/java/org/shedlang/compiler/backends/llvm/ir/ast/operands/LlvmOperand.java index 35a1cfcd..6f53dab1 100644 --- a/src/main/java/org/shedlang/compiler/backends/llvm/ir/ast/operands/LlvmOperand.java +++ b/src/main/java/org/shedlang/compiler/backends/llvm/ir/ast/operands/LlvmOperand.java @@ -1,4 +1,4 @@ package org.shedlang.compiler.backends.llvm.ir.ast.operands; -public sealed interface LlvmOperand permits LlvmOperandArray, LlvmOperandInt, LlvmVariable { +public sealed interface LlvmOperand permits LlvmOperandArray, LlvmOperandInt, LlvmOperandStructure, LlvmVariable { } diff --git a/src/main/java/org/shedlang/compiler/backends/llvm/ir/ast/operands/LlvmOperandStructure.java b/src/main/java/org/shedlang/compiler/backends/llvm/ir/ast/operands/LlvmOperandStructure.java new file mode 100644 index 00000000..a12d7512 --- /dev/null +++ b/src/main/java/org/shedlang/compiler/backends/llvm/ir/ast/operands/LlvmOperandStructure.java @@ -0,0 +1,8 @@ +package org.shedlang.compiler.backends.llvm.ir.ast.operands; + +import java.util.List; + +public record LlvmOperandStructure( + List<LlvmTypedOperand> elements +) implements LlvmOperand { +} |
