diff options
| author | Robin Voetter <robin@voetter.nl> | 2023-05-29 20:45:54 +0200 |
|---|---|---|
| committer | Robin Voetter <robin@voetter.nl> | 2023-05-30 19:43:37 +0200 |
| commit | fcb422585c1a9e91933ff998417eb8682a4ffbcc (patch) | |
| tree | 46075cad0ad13ec49c3489ec0b64541b83ba8502 /src/codegen/spirv/Module.zig | |
| parent | 112acb1bda04c16bf1d25f7fbbe9855c35725347 (diff) | |
| download | zig-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.zig | 19 |
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.* = .{ |
