aboutsummaryrefslogtreecommitdiff
path: root/src/test/java
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2023-07-07 18:17:39 +0100
committerMichael Williamson <mike@zwobble.org>2023-07-07 18:17:39 +0100
commit4123de472e0442cccd8fd01767e399dc05cc6b11 (patch)
treee3cb94d2b0e233d88b859c3bb2bc4356a84393e0 /src/test/java
parent6f462f32793ae1329259e5613940a50a7c2dd5e7 (diff)
Add LLVM sub 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.java9
2 files changed, 22 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 86a5b0d7..99eda802 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
@@ -181,6 +181,19 @@ public class LlvmIrSerializerInstructionTests {
assertThat(result, equalTo("store i64 42, ptr %target"));
}
+ @Test
+ public void subIsSerializedWithTypeAndOperands() throws IOException {
+ var instruction = LlvmIr.sub(
+ LlvmIr.variableLocal("x"),
+ LlvmTypes.INT_64,
+ LlvmIr.variableLocal("y"),
+ LlvmIr.variableLocal("z")
+ );
+
+ var result = serializeToString(instruction, LlvmIrSerializer::serializeInstruction);
+
+ assertThat(result, equalTo("%x = sub i64 %y, %z"));
+ }
@Test
public void zextIsSerialized() throws IOException {
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 59c16bb6..78685315 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
@@ -158,6 +158,15 @@ public class LlvmIr {
return new LlvmStore(type, value, pointer);
}
+ public static LlvmSub sub(
+ LlvmVariable target,
+ LlvmType type,
+ LlvmOperand left,
+ LlvmOperand right
+ ) {
+ return new LlvmSub(target, type, left, right);
+ }
+
public static LlvmTypedOperand typedOperand(LlvmType type, LlvmOperand value) {
return new LlvmTypedOperand(type, value);
}