diff options
| author | Michael Williamson <mike@zwobble.org> | 2024-01-22 19:26:59 +0000 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2024-01-22 19:26:59 +0000 |
| commit | 70906ba9e9213391b524260acd653852e9b8f428 (patch) | |
| tree | 10523a1202a2b55b59f80dd96a06cfa71a980d3a /src/test/java | |
| parent | c05cccb9f60bc4d4dab4f50bf686b6a94bfc6012 (diff) | |
Add LLVM getelementptr operand
Diffstat (limited to 'src/test/java')
| -rw-r--r-- | src/test/java/org/shedlang/compiler/backends/llvm/ir/LlvmIrSerializerOperandsTests.java | 21 | ||||
| -rw-r--r-- | src/test/java/org/shedlang/compiler/backends/llvm/ir/ast/LlvmIr.java | 8 |
2 files changed, 29 insertions, 0 deletions
diff --git a/src/test/java/org/shedlang/compiler/backends/llvm/ir/LlvmIrSerializerOperandsTests.java b/src/test/java/org/shedlang/compiler/backends/llvm/ir/LlvmIrSerializerOperandsTests.java index 01de20fc..0139599e 100644 --- a/src/test/java/org/shedlang/compiler/backends/llvm/ir/LlvmIrSerializerOperandsTests.java +++ b/src/test/java/org/shedlang/compiler/backends/llvm/ir/LlvmIrSerializerOperandsTests.java @@ -31,6 +31,27 @@ public class LlvmIrSerializerOperandsTests { } @Test + public void getElementPtrIsSerialized() throws IOException { + var operand = LlvmIr.operandGetElementPtr( + LlvmTypes.pointer( + LlvmTypes.array( + 0, + LlvmTypes.structure(List.of(LlvmTypes.INT_64, LlvmTypes.INT_32)) + ) + ), + LlvmIr.variableLocal("y"), + List.of( + LlvmIr.typedOperand(LlvmTypes.INT_64, LlvmIr.operandInt(3)), + LlvmIr.typedOperand(LlvmTypes.INT_32, LlvmIr.operandInt(1)) + ) + ); + + var result = serializeToString(operand, LlvmIrSerializer::serializeOperand); + + assertThat(result, equalTo("getelementptr ([0 x {i64, i32}], ptr %y, i64 3, i32 1)")); + } + + @Test public void localVariableIsSerializedWithPercent() throws IOException { var operand = LlvmIr.variableLocal("x"); 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 465597d9..a435877b 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 @@ -123,6 +123,14 @@ public class LlvmIr { return new LlvmOperandArray(type, elements); } + public static LlvmOperand operandGetElementPtr( + LlvmTypePointer pointerType, + LlvmOperand pointer, + List<LlvmTypedOperand> indexes + ) { + return new LlvmOperandGetElementPtr(pointerType, pointer, indexes); + } + public static LlvmOperand operandInt(long value) { return new LlvmOperandInt(value); } |
