From 855a6dbfa164b737fc752831b19fef468255aab5 Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Tue, 13 Jun 2023 23:05:11 +0100 Subject: Add LLVM store instruction --- .../shedlang/compiler/backends/llvm/ir/LlvmIrSerializer.java | 10 ++++++++++ .../backends/llvm/ir/ast/instructions/LlvmInstruction.java | 2 +- .../compiler/backends/llvm/ir/ast/instructions/LlvmStore.java | 11 +++++++++++ 3 files changed, 22 insertions(+), 1 deletion(-) create mode 100644 src/main/java/org/shedlang/compiler/backends/llvm/ir/ast/instructions/LlvmStore.java (limited to 'src/main/java') 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 11569f74..bc23c195 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 @@ -52,6 +52,16 @@ public class LlvmIrSerializer { serializeTypedOperand(index, builder); } } + case LlvmStore store -> { + builder.append("store "); + serializeType(store.type(), builder); + builder.append(" "); + serializeOperand(store.value(), builder); + builder.append(", "); + serializeType(LlvmTypes.pointer(store.type()), builder); + builder.append(" "); + serializeOperand(store.pointer(), builder); + } } } diff --git a/src/main/java/org/shedlang/compiler/backends/llvm/ir/ast/instructions/LlvmInstruction.java b/src/main/java/org/shedlang/compiler/backends/llvm/ir/ast/instructions/LlvmInstruction.java index 48d90ed4..caccc38f 100644 --- a/src/main/java/org/shedlang/compiler/backends/llvm/ir/ast/instructions/LlvmInstruction.java +++ b/src/main/java/org/shedlang/compiler/backends/llvm/ir/ast/instructions/LlvmInstruction.java @@ -1,4 +1,4 @@ package org.shedlang.compiler.backends.llvm.ir.ast.instructions; -public sealed interface LlvmInstruction permits LlvmAdd, LlvmCall, LlvmGetElementPtr { +public sealed interface LlvmInstruction permits LlvmAdd, LlvmCall, LlvmGetElementPtr, LlvmStore { } diff --git a/src/main/java/org/shedlang/compiler/backends/llvm/ir/ast/instructions/LlvmStore.java b/src/main/java/org/shedlang/compiler/backends/llvm/ir/ast/instructions/LlvmStore.java new file mode 100644 index 00000000..93b6a6ec --- /dev/null +++ b/src/main/java/org/shedlang/compiler/backends/llvm/ir/ast/instructions/LlvmStore.java @@ -0,0 +1,11 @@ +package org.shedlang.compiler.backends.llvm.ir.ast.instructions; + +import org.shedlang.compiler.backends.llvm.ir.ast.operands.LlvmOperand; +import org.shedlang.compiler.backends.llvm.ir.ast.types.LlvmType; + +public record LlvmStore( + LlvmType type, + LlvmOperand value, + LlvmOperand pointer +) implements LlvmInstruction { +} -- cgit v1.2.3