diff options
| author | Michael Williamson <mike@zwobble.org> | 2024-01-26 18:48:56 +0000 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2024-01-26 18:48:56 +0000 |
| commit | e4b51902a72b08a9feddbcd527550ddde08ecc9b (patch) | |
| tree | 936d7c5eb764fe713a11bf2af7849d182f2b1721 /src/main/java | |
| parent | 4783c64f709160b82a9e24d68b82d98288a17716 (diff) | |
Add Patio int32-const
Diffstat (limited to 'src/main/java')
5 files changed, 27 insertions, 1 deletions
diff --git a/src/main/java/org/shedlang/compiler/backends/llvm/codegen/PatioToLlvm.java b/src/main/java/org/shedlang/compiler/backends/llvm/codegen/PatioToLlvm.java index 5325a156..01b9ca18 100644 --- a/src/main/java/org/shedlang/compiler/backends/llvm/codegen/PatioToLlvm.java +++ b/src/main/java/org/shedlang/compiler/backends/llvm/codegen/PatioToLlvm.java @@ -1109,6 +1109,9 @@ public class PatioToLlvm { case PatioIntConst patioIntConst -> context.target().patioIntType(); + case PatioInt32Const patioInt32Const -> + LlvmTypes.INT_32; + case PatioLocalRef patioLocalRef -> context.patioLocalToType(patioLocalRef); }; @@ -1131,6 +1134,9 @@ public class PatioToLlvm { case PatioIntConst patioIntConst -> patioIntValueToLlvmOperand(patioIntConst.value(), context.target()); + case PatioInt32Const patioInt32Const -> + patioIntValueToLlvmOperand(patioInt32Const.value(), context.target()); + case PatioLocalRef patioLocalRef -> context.patioLocalToOperand(patioLocalRef); }; diff --git a/src/main/java/org/shedlang/compiler/backends/wasm/PatioToWasm.java b/src/main/java/org/shedlang/compiler/backends/wasm/PatioToWasm.java index f6b9d5c7..e15cdc23 100644 --- a/src/main/java/org/shedlang/compiler/backends/wasm/PatioToWasm.java +++ b/src/main/java/org/shedlang/compiler/backends/wasm/PatioToWasm.java @@ -556,6 +556,11 @@ public class PatioToWasm { generateIntValue(patioIntConst.value(), context.target) )); + case PatioInt32Const patioInt32Const -> + context.addInstruction(new WasmI32Const( + generateIntValue(patioInt32Const.value(), context.target) + )); + case PatioLocalRef patioLocalRef -> { var wasmLocalIndex = context.wasmLocalIndex(patioLocalRef); yield context.addInstruction(new WasmLocalGet(wasmLocalIndex)); @@ -754,6 +759,8 @@ public class PatioToWasm { patioTypeToWasmValueType(PatioTypes.FUNCTION_POINTER, context.target); case PatioIntConst patioIntConst -> patioTypeToWasmValueType(PatioTypes.INT, context.target); + case PatioInt32Const patioInt32Const -> + patioTypeToWasmValueType(PatioTypes.INT32, context.target); case PatioLocalRef patioLocalRef -> context.wasmLocalType(patioLocalRef); }; diff --git a/src/main/java/org/shedlang/compiler/patio/PatioSerializer.java b/src/main/java/org/shedlang/compiler/patio/PatioSerializer.java index 75425069..9e208b2c 100644 --- a/src/main/java/org/shedlang/compiler/patio/PatioSerializer.java +++ b/src/main/java/org/shedlang/compiler/patio/PatioSerializer.java @@ -427,6 +427,9 @@ public class PatioSerializer { case PatioIntConst int_ -> treeList(treeIdentifier("int-const"), intValueToTree(int_.value())); + case PatioInt32Const int32 -> + treeList(treeIdentifier("int32-const"), intValueToTree(int32.value())); + case PatioLocalRef localRef -> treeList(treeIdentifier("local"), treeString(localRef.name())); }; diff --git a/src/main/java/org/shedlang/compiler/patio/operands/PatioInt32Const.java b/src/main/java/org/shedlang/compiler/patio/operands/PatioInt32Const.java new file mode 100644 index 00000000..ffc2e94f --- /dev/null +++ b/src/main/java/org/shedlang/compiler/patio/operands/PatioInt32Const.java @@ -0,0 +1,10 @@ +package org.shedlang.compiler.patio.operands; + +import org.shedlang.compiler.patio.values.PatioIntValue; +import org.shedlang.compiler.patio.values.PatioIntValueLiteral; + +public record PatioInt32Const(PatioIntValue value) implements PatioOperand { + public static PatioInt32Const of(int value) { + return new PatioInt32Const(new PatioIntValueLiteral(value)); + } +} diff --git a/src/main/java/org/shedlang/compiler/patio/operands/PatioOperand.java b/src/main/java/org/shedlang/compiler/patio/operands/PatioOperand.java index 17ffb0e4..cc7db6c5 100644 --- a/src/main/java/org/shedlang/compiler/patio/operands/PatioOperand.java +++ b/src/main/java/org/shedlang/compiler/patio/operands/PatioOperand.java @@ -1,5 +1,5 @@ package org.shedlang.compiler.patio.operands; -public sealed interface PatioOperand permits PatioBoolConst, PatioDataPtrConst, PatioFunctionPtrConst, PatioIntConst, PatioLocalRef { +public sealed interface PatioOperand permits PatioBoolConst, PatioDataPtrConst, PatioFunctionPtrConst, PatioIntConst, PatioInt32Const, PatioLocalRef { } |
