authorgravatar for robin@voetter.nlRobin Voetter <robin@voetter.nl> 2021-09-03 04:36:56+02:00
committergravatar for robin@voetter.nlRobin Voetter <robin@voetter.nl> 2021-09-20 02:29:04+02:00
loge4ac063297fc9210ae3a97fa370ea8c6c216ec43
tree0ec2bb32f5760fdfb8f2fcdb1d1b87fa74b02471
parent13b917148e97560760eb13cd0e4a0b7365739f64

Address Spaces: Restructure llvmAddressSpace a bit


2 files changed, 49 insertions(+), 51 deletions(-)

src/codegen/llvm.zig+8-11
...@@ -583,18 +583,15 @@ pub const DeclGen = struct {...@@ -583,18 +583,15 @@ pub const DeclGen = struct {
583583
584 fn llvmAddressSpace(self: DeclGen, address_space: std.builtin.AddressSpace) c_uint {584 fn llvmAddressSpace(self: DeclGen, address_space: std.builtin.AddressSpace) c_uint {
585 const target = self.module.getTarget();585 const target = self.module.getTarget();
586 return switch (address_space) {586 return switch (target.cpu.arch) {
587 .generic => llvm.address_space.default,587 .i386, .x86_64 => switch (address_space) {
588 .gs => switch (target.cpu.arch) {588 .generic => llvm.address_space.default,
589 .i386, .x86_64 => llvm.address_space.x86.gs,589 .gs => llvm.address_space.x86.gs,
590 else => unreachable,590 .fs => llvm.address_space.x86.fs,
591 },591 .ss => llvm.address_space.x86.ss,
592 .fs => switch (target.cpu.arch) {
593 .i386, .x86_64 => llvm.address_space.x86.fs,
594 else => unreachable,
595 },592 },
596 .ss => switch (target.cpu.arch) {593 else => switch (address_space) {
597 .i386, .x86_64 => llvm.address_space.x86.ss,594 .generic => llvm.address_space.default,
598 else => unreachable,595 else => unreachable,
599 },596 },
600 };597 };
src/codegen/llvm/bindings.zig+41-40
...@@ -981,62 +981,63 @@ pub const TypeKind = enum(c_int) {...@@ -981,62 +981,63 @@ pub const TypeKind = enum(c_int) {
981};981};
982982
983pub const address_space = struct {983pub const address_space = struct {
984 pub const default = 0;984 pub const default: c_uint = 0;
985985
986 // See llvm/lib/Target/X86/X86.h986 // See llvm/lib/Target/X86/X86.h
987 pub const x86_64 = x86;987 pub const x86_64 = x86;
988 pub const x86 = struct {988 pub const x86 = struct {
989 pub const gs = 256;989 pub const gs: c_uint = 256;
990 pub const fs = 257;990 pub const fs: c_uint = 257;
991 pub const ss = 258;991 pub const ss: c_uint = 258;
992992
993 pub const ptr32_sptr = 270;993 pub const ptr32_sptr: c_uint = 270;
994 pub const ptr32_uptr = 271;994 pub const ptr32_uptr: c_uint = 271;
995 pub const ptr64 = 272;995 pub const ptr64: c_uint = 272;
996 };996 };
997997
998 // See llvm/lib/Target/AVR/AVR.h998 // See llvm/lib/Target/AVR/AVR.h
999 pub const avr = struct {999 pub const avr = struct {
1000 pub const data_memory = 0;1000 pub const data_memory: c_uint = 0;
1001 pub const program_memory = 1;1001 pub const program_memory: c_uint = 1;
1002 };1002 };
10031003
1004 // See llvm/lib/Target/NVPTX/NVPTX.h1004 // See llvm/lib/Target/NVPTX/NVPTX.h
1005 pub const nvptx = struct {1005 pub const nvptx = struct {
1006 pub const generic = 0;1006 pub const generic: c_uint = 0;
1007 pub const global = 1;1007 pub const global: c_uint = 1;
1008 pub const constant = 2;1008 pub const constant: c_uint = 2;
1009 pub const shared = 3;1009 pub const shared: c_uint = 3;
1010 pub const param = 4;1010 pub const param: c_uint = 4;
1011 pub const local = 5;1011 pub const local: c_uint = 5;
1012 };1012 };
10131013
1014 // See llvm/lib/Target/AMDGPU/AMDGPU.h1014 // See llvm/lib/Target/AMDGPU/AMDGPU.h
1015 pub const amdgpu = struct {1015 pub const amdgpu = struct {
1016 pub const flat = 0;1016 pub const flat: c_uint = 0;
1017 pub const global = 1;1017 pub const global: c_uint = 1;
1018 pub const region = 2;1018 pub const region: c_uint = 2;
1019 pub const local = 3;1019 pub const local: c_uint = 3;
1020 pub const constant = 4;1020 pub const constant: c_uint = 4;
1021 pub const constant_32bit = 6;1021 pub const private: c_uint = 5;
1022 pub const buffer_fat_pointer = 7;1022 pub const constant_32bit: c_uint = 6;
1023 pub const param_d = 6;1023 pub const buffer_fat_pointer: c_uint = 7;
1024 pub const param_i = 7;1024 pub const param_d: c_uint = 6;
1025 pub const constant_buffer_0 = 8;1025 pub const param_i: c_uint = 7;
1026 pub const constant_buffer_1 = 9;1026 pub const constant_buffer_0: c_uint = 8;
1027 pub const constant_buffer_2 = 10;1027 pub const constant_buffer_1: c_uint = 9;
1028 pub const constant_buffer_3 = 11;1028 pub const constant_buffer_2: c_uint = 10;
1029 pub const constant_buffer_4 = 12;1029 pub const constant_buffer_3: c_uint = 11;
1030 pub const constant_buffer_5 = 13;1030 pub const constant_buffer_4: c_uint = 12;
1031 pub const constant_buffer_6 = 14;1031 pub const constant_buffer_5: c_uint = 13;
1032 pub const constant_buffer_7 = 15;1032 pub const constant_buffer_6: c_uint = 14;
1033 pub const constant_buffer_8 = 16;1033 pub const constant_buffer_7: c_uint = 15;
1034 pub const constant_buffer_9 = 17;1034 pub const constant_buffer_8: c_uint = 16;
1035 pub const constant_buffer_10 = 18;1035 pub const constant_buffer_9: c_uint = 17;
1036 pub const constant_buffer_11 = 19;1036 pub const constant_buffer_10: c_uint = 18;
1037 pub const constant_buffer_12 = 20;1037 pub const constant_buffer_11: c_uint = 19;
1038 pub const constant_buffer_13 = 21;1038 pub const constant_buffer_12: c_uint = 20;
1039 pub const constant_buffer_14 = 22;1039 pub const constant_buffer_13: c_uint = 21;
1040 pub const constant_buffer_15 = 23;1040 pub const constant_buffer_14: c_uint = 22;
1041 pub const constant_buffer_15: c_uint = 23;
1041 };1042 };
1042};1043};