aboutsummaryrefslogtreecommitdiff
path: root/src/test/java
diff options
context:
space:
mode:
Diffstat (limited to 'src/test/java')
-rw-r--r--src/test/java/org/shedlang/compiler/backends/llvm/ir/LlvmIrSerializerInstructionTests.java14
-rw-r--r--src/test/java/org/shedlang/compiler/backends/llvm/ir/ast/LlvmIr.java9
2 files changed, 23 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 99eda802..eb55a95c 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
@@ -196,6 +196,20 @@ public class LlvmIrSerializerInstructionTests {
}
@Test
+ public void truncIsSerialized() throws IOException {
+ var instruction = LlvmIr.trunc(
+ LlvmIr.variableLocal("target"),
+ LlvmTypes.INT_64,
+ LlvmIr.variableLocal("source"),
+ LlvmTypes.INT_32
+ );
+
+ var result = serializeToString(instruction, LlvmIrSerializer::serializeInstruction);
+
+ assertThat(result, equalTo("%target = trunc i64 %source to i32"));
+ }
+
+ @Test
public void zextIsSerialized() throws IOException {
var instruction = LlvmIr.zext(
LlvmIr.variableLocal("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 78685315..5d957365 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
@@ -167,6 +167,15 @@ public class LlvmIr {
return new LlvmSub(target, type, left, right);
}
+ public static LlvmTrunc trunc(
+ LlvmVariable target,
+ LlvmType sourceType,
+ LlvmOperand value,
+ LlvmType targetType
+ ) {
+ return new LlvmTrunc(target, sourceType, value, targetType);
+ }
+
public static LlvmTypedOperand typedOperand(LlvmType type, LlvmOperand value) {
return new LlvmTypedOperand(type, value);
}