aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/org/shedlang/compiler/backends
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2024-01-26 18:32:23 +0000
committerMichael Williamson <mike@zwobble.org>2024-01-26 18:32:23 +0000
commit37dbaffd4d32d343b772ef14cb0ec8ff039f674f (patch)
tree1c0fbfe149e83cd3d2935dff6a564a91b96a5332 /src/main/java/org/shedlang/compiler/backends
parentf0a14f101190944ee04dd458c12025c71939b31f (diff)
Add int32 to Patio
Diffstat (limited to 'src/main/java/org/shedlang/compiler/backends')
-rw-r--r--src/main/java/org/shedlang/compiler/backends/llvm/codegen/PatioToLlvm.java16
-rw-r--r--src/main/java/org/shedlang/compiler/backends/wasm/PatioToWasm.java8
2 files changed, 24 insertions, 0 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 b2b06215..5325a156 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
@@ -1016,6 +1016,9 @@ public class PatioToLlvm {
case PatioDataLayoutInt patioDataLayoutInt ->
throw new RuntimeException("offset not allowed for ints");
+ case PatioDataLayoutInt32 patioDataLayoutInt32 ->
+ throw new RuntimeException("offset not allowed for int32s");
+
case PatioDataLayoutStruct patioDataLayoutStruct ->
patioDataOffsetsToLlvmOffsets(
patioDataLayoutStruct.elements().get(patioOffset),
@@ -1067,6 +1070,9 @@ public class PatioToLlvm {
case PatioDataLayoutInt patioDataLayoutInt ->
target.patioIntType();
+ case PatioDataLayoutInt32 patioDataLayoutInt32 ->
+ LlvmTypes.INT_32;
+
case PatioDataLayoutStruct patioDataLayoutStruct ->
patioDataOffsetToLlvmType(
patioDataLayoutStruct.elements().get(patioOffsets.get(0)),
@@ -1173,6 +1179,9 @@ public class PatioToLlvm {
case PatioIntType patioIntType ->
target.patioIntType();
+ case PatioInt32Type patioInt32Type ->
+ LlvmTypes.INT_32;
+
case PatioVoidType patioVoidType ->
LlvmTypes.VOID;
};
@@ -1207,6 +1216,10 @@ public class PatioToLlvm {
case PatioDataLayoutInt patioDataLayoutInt ->
target.patioIntType();
+ case PatioDataLayoutInt32 patioDataLayoutInt32 ->
+ LlvmTypes.INT_32;
+
+
case PatioDataLayoutStruct patioDataLayoutStruct ->
LlvmTypes.structure(
patioDataLayoutStruct.elements().stream()
@@ -1251,6 +1264,9 @@ public class PatioToLlvm {
case PatioDataLayoutInt patioDataLayoutInt ->
new LlvmOperandInt(0);
+ case PatioDataLayoutInt32 patioDataLayoutInt32 ->
+ new LlvmOperandInt(0);
+
case PatioDataLayoutStruct patioDataLayoutStruct ->
new LlvmOperandStructure(
patioDataLayoutStruct.elements().stream()
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 81a71340..f6b9d5c7 100644
--- a/src/main/java/org/shedlang/compiler/backends/wasm/PatioToWasm.java
+++ b/src/main/java/org/shedlang/compiler/backends/wasm/PatioToWasm.java
@@ -603,6 +603,9 @@ public class PatioToWasm {
case PatioDataLayoutInt patioDataLayoutInt ->
target.patioIntType().sizeBytes();
+ case PatioDataLayoutInt32 patioDataLayoutInt32 ->
+ WasmValueType.I32.sizeBytes();
+
case PatioDataLayoutStruct patioDataLayoutStruct ->
patioDataLayoutStruct.elements().stream()
.map(element -> sizeOf(element, target))
@@ -639,6 +642,9 @@ public class PatioToWasm {
case PatioDataLayoutInt patioDataLayoutInt -> {
throw new RuntimeException("offset not allowed for ints");
}
+ case PatioDataLayoutInt32 patioDataLayoutInt32 -> {
+ throw new RuntimeException("offset not allowed for int32s");
+ }
case PatioDataLayoutStruct patioDataLayoutStruct -> {
for (var i = 0; i < patioOffset; i++) {
var element = patioDataLayoutStruct.elements().get(i);
@@ -768,6 +774,8 @@ public class PatioToWasm {
target.functionPointerType();
case PatioIntType patioIntType ->
target.patioIntType();
+ case PatioInt32Type patioInt32Type ->
+ WasmValueType.I32;
case PatioVoidType patioVoidType ->
throw new IllegalArgumentException("Cannot have void values");
};