aboutsummaryrefslogtreecommitdiff
path: root/src/codegen/spirv/Module.zig
diff options
context:
space:
mode:
authorRobin Voetter <robin@voetter.nl>2023-05-29 20:45:54 +0200
committerRobin Voetter <robin@voetter.nl>2023-05-30 19:43:37 +0200
commitfcb422585c1a9e91933ff998417eb8682a4ffbcc (patch)
tree46075cad0ad13ec49c3489ec0b64541b83ba8502 /src/codegen/spirv/Module.zig
parent112acb1bda04c16bf1d25f7fbbe9855c35725347 (diff)
downloadzig-fcb422585c1a9e91933ff998417eb8682a4ffbcc.tar.gz
zig-fcb422585c1a9e91933ff998417eb8682a4ffbcc.zip
spirv: translate remaining types
Diffstat (limited to 'src/codegen/spirv/Module.zig')
-rw-r--r--src/codegen/spirv/Module.zig19
1 files changed, 19 insertions, 0 deletions
diff --git a/src/codegen/spirv/Module.zig b/src/codegen/spirv/Module.zig
index 54b868aba2..85d0bbf78c 100644
--- a/src/codegen/spirv/Module.zig
+++ b/src/codegen/spirv/Module.zig
@@ -235,6 +235,10 @@ pub fn resolveId(self: *Module, key: TypeConstantCache.Key) !IdResult {
return self.resultId(try self.resolve(key));
}
+pub fn resolveString(self: *Module, str: []const u8) !TypeConstantCache.String {
+ return try self.tc_cache.addString(self, str);
+}
+
fn orderGlobalsInto(
self: *Module,
decl_index: Decl.Index,
@@ -769,6 +773,21 @@ pub fn simpleStructType(self: *Module, members: []const Type.Payload.Struct.Memb
return try self.resolveType(Type.initPayload(&payload.base));
}
+pub fn arrayType2(self: *Module, len: u32, elem_ty_ref: TypeConstantCache.Ref) !TypeConstantCache.Ref {
+ const len_ty_ref = try self.resolve(.{ .int_type = .{
+ .signedness = .unsigned,
+ .bits = 32,
+ } });
+ const len_ref = try self.resolve(.{ .int = .{
+ .ty = len_ty_ref,
+ .value = .{ .uint64 = len },
+ } });
+ return try self.resolve(.{ .array_type = .{
+ .element_type = elem_ty_ref,
+ .length = len_ref,
+ } });
+}
+
pub fn arrayType(self: *Module, len: u32, ty: Type.Ref) !Type.Ref {
const payload = try self.arena.create(Type.Payload.Array);
payload.* = .{