aboutsummaryrefslogtreecommitdiff
path: root/src/test/java
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2023-06-13 23:05:11 +0100
committerMichael Williamson <mike@zwobble.org>2023-06-13 23:05:11 +0100
commit855a6dbfa164b737fc752831b19fef468255aab5 (patch)
treed86f0f533c846a4d59f9554a7c546c77e74f2620 /src/test/java
parent90258c88930b3330b5ad7b3f3540cd0e288536f9 (diff)
Add LLVM store instruction
Diffstat (limited to 'src/test/java')
-rw-r--r--src/test/java/org/shedlang/compiler/backends/llvm/ir/LlvmIrSerializerInstructionTests.java13
-rw-r--r--src/test/java/org/shedlang/compiler/backends/llvm/ir/ast/LlvmIr.java8
2 files changed, 21 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 1617d454..567bf2b2 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
@@ -46,4 +46,17 @@ public class LlvmIrSerializerInstructionTests {
assertThat(result, equalTo("$x = getelementptr [0 x {i64, i32}], ptr $y, i64 3, i32 1"));
}
+
+ @Test
+ public void storeIsSerialized() {
+ var instruction = LlvmIr.store(
+ LlvmTypes.INT_64,
+ LlvmIr.operandInt(42),
+ LlvmIr.variableLocal("target")
+ );
+
+ var result = serializeToString(instruction, LlvmIrSerializer::serializeInstruction);
+
+ assertThat(result, equalTo("store i64 42, i64 * $target"));
+ }
}
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 1c1b298b..774cb031 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
@@ -84,6 +84,14 @@ public class LlvmIr {
return new LlvmReturnVoid();
}
+ public static LlvmStore store(
+ LlvmType type,
+ LlvmOperand value,
+ LlvmOperand pointer
+ ) {
+ return new LlvmStore(type, value, pointer);
+ }
+
public static LlvmTypedOperand typedOperand(LlvmType type, LlvmOperand value) {
return new LlvmTypedOperand(type, value);
}