diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/Compilation.zig | 4 | ||||
| -rw-r--r-- | src/Sema.zig | 10 | ||||
| -rw-r--r-- | src/Zcu.zig | 3 | ||||
| -rw-r--r-- | src/codegen/llvm.zig | 30 | ||||
| -rw-r--r-- | src/link/SpirV.zig | 10 | ||||
| -rw-r--r-- | src/target.zig | 6 |
6 files changed, 30 insertions, 33 deletions
diff --git a/src/Compilation.zig b/src/Compilation.zig index 01a5772e23..d7dabd5164 100644 --- a/src/Compilation.zig +++ b/src/Compilation.zig @@ -6266,7 +6266,7 @@ fn canBuildLibCompilerRt(target: std.Target, use_llvm: bool) bool { else => {}, } switch (target.cpu.arch) { - .spirv32, .spirv64 => return false, + .spirv, .spirv32, .spirv64 => return false, else => {}, } return switch (target_util.zigBackend(target, use_llvm)) { @@ -6284,7 +6284,7 @@ fn canBuildZigLibC(target: std.Target, use_llvm: bool) bool { else => {}, } switch (target.cpu.arch) { - .spirv32, .spirv64 => return false, + .spirv, .spirv32, .spirv64 => return false, else => {}, } return switch (target_util.zigBackend(target, use_llvm)) { diff --git a/src/Sema.zig b/src/Sema.zig index 20daa78e9a..4fcb9c98c8 100644 --- a/src/Sema.zig +++ b/src/Sema.zig @@ -10038,11 +10038,11 @@ fn finishFunc( else => "x86_64", }, .Kernel => switch (arch) { - .nvptx, .nvptx64, .amdgcn, .spirv32, .spirv64 => null, + .nvptx, .nvptx64, .amdgcn, .spirv, .spirv32, .spirv64 => null, else => "nvptx, amdgcn and SPIR-V", }, .Fragment, .Vertex => switch (arch) { - .spirv32, .spirv64 => null, + .spirv, .spirv32, .spirv64 => null, else => "SPIR-V", }, })) |allowed_platform| { @@ -26703,7 +26703,7 @@ fn zirWorkItem( switch (target.cpu.arch) { // TODO: Allow for other GPU targets. - .amdgcn, .spirv64, .spirv32 => {}, + .amdgcn, .spirv, .spirv64, .spirv32 => {}, else => { return sema.fail(block, builtin_src, "builtin only available on GPU targets; targeted architecture is {s}", .{@tagName(target.cpu.arch)}); }, @@ -37323,9 +37323,9 @@ pub fn analyzeAsAddressSpace( const target = pt.zcu.getTarget(); const arch = target.cpu.arch; - const is_nv = arch == .nvptx or arch == .nvptx64; + const is_nv = arch.isNvptx(); const is_amd = arch == .amdgcn; - const is_spirv = arch == .spirv32 or arch == .spirv64; + const is_spirv = arch.isSpirV(); const is_gpu = is_nv or is_amd or is_spirv; const supported = switch (address_space) { diff --git a/src/Zcu.zig b/src/Zcu.zig index bcb331b597..10fa45a62b 100644 --- a/src/Zcu.zig +++ b/src/Zcu.zig @@ -2910,6 +2910,7 @@ pub fn atomicPtrAlignment( .s390x, .wasm64, .ve, + .spirv, .spirv64, .loongarch64, => 64, @@ -2919,8 +2920,6 @@ pub fn atomicPtrAlignment( => 128, .x86_64 => if (std.Target.x86.featureSetHas(target.cpu.features, .cx16)) 128 else 64, - - .spirv => @panic("TODO what should this value be?"), }; if (ty.toIntern() == .bool_type) return .none; diff --git a/src/codegen/llvm.zig b/src/codegen/llvm.zig index b900c15d82..6453ea04a3 100644 --- a/src/codegen/llvm.zig +++ b/src/codegen/llvm.zig @@ -110,7 +110,7 @@ pub fn targetTriple(allocator: Allocator, target: std.Target) ![]const u8 { .netbsd => "netbsd", .openbsd => "openbsd", .solaris, .illumos => "solaris", - .windows => "windows", + .windows, .uefi => "windows", .zos => "zos", .haiku => "haiku", .rtems => "rtems", @@ -128,21 +128,18 @@ pub fn targetTriple(allocator: Allocator, target: std.Target) ![]const u8 { .hurd => "hurd", .wasi => "wasi", .emscripten => "emscripten", - .uefi => "windows", .macos => "macosx", .ios => "ios", .tvos => "tvos", .watchos => "watchos", .driverkit => "driverkit", .shadermodel => "shadermodel", - .liteos => "liteos", .visionos => "xros", .serenity => "serenity", .vulkan => "vulkan", - .glsl450, + .opengl, .plan9, - .minix, .contiki, .other, => "unknown", @@ -207,15 +204,7 @@ pub fn targetTriple(allocator: Allocator, target: std.Target) ![]const u8 { pub fn targetOs(os_tag: std.Target.Os.Tag) llvm.OSType { return switch (os_tag) { - .freestanding, - .other, - .opencl, - .glsl450, - .plan9, - .minix, - .contiki, - => .UnknownOS, - + .freestanding => .UnknownOS, .windows, .uefi => .Win32, .dragonfly => .DragonFly, .freebsd => .FreeBSD, @@ -234,6 +223,7 @@ pub fn targetOs(os_tag: std.Target.Os.Tag) llvm.OSType { .cuda => .CUDA, .nvcl => .NVCL, .amdhsa => .AMDHSA, + .opencl => .UnknownOS, // https://llvm.org/docs/SPIRVUsage.html#target-triples .ps4 => .PS4, .ps5 => .PS5, .elfiamcu => .ELFIAMCU, @@ -248,9 +238,14 @@ pub fn targetOs(os_tag: std.Target.Os.Tag) llvm.OSType { .emscripten => .Emscripten, .driverkit => .DriverKit, .shadermodel => .ShaderModel, - .liteos => .LiteOS, .vulkan => .Vulkan, .serenity => .Serenity, + + .opengl, + .plan9, + .contiki, + .other, + => .UnknownOS, }; } @@ -11763,6 +11758,7 @@ fn backendSupportsF16(target: std.Target) bool { .mipsel, .mips64, .mips64el, + .s390x, => false, .aarch64 => std.Target.aarch64.featureSetHas(target.cpu.features, .fp_armv8), else => true, @@ -11774,7 +11770,9 @@ fn backendSupportsF16(target: std.Target) bool { /// or if it produces miscompilations. fn backendSupportsF128(target: std.Target) bool { return switch (target.cpu.arch) { - .amdgcn => false, + .amdgcn, + .sparc, + => false, .aarch64 => std.Target.aarch64.featureSetHas(target.cpu.features, .fp_armv8), else => true, }; diff --git a/src/link/SpirV.zig b/src/link/SpirV.zig index e97c80c3fe..f76ceec2f5 100644 --- a/src/link/SpirV.zig +++ b/src/link/SpirV.zig @@ -80,12 +80,12 @@ pub fn createEmpty( errdefer self.deinit(); switch (target.cpu.arch) { - .spirv32, .spirv64 => {}, + .spirv, .spirv32, .spirv64 => {}, else => unreachable, // Caught by Compilation.Config.resolve. } switch (target.os.tag) { - .opencl, .glsl450, .vulkan => {}, + .opencl, .opengl, .vulkan => {}, else => unreachable, // Caught by Compilation.Config.resolve. } @@ -290,7 +290,7 @@ fn writeCapabilities(spv: *SpvModule, target: std.Target) !void { // TODO: Integrate with a hypothetical feature system const caps: []const spec.Capability = switch (target.os.tag) { .opencl => &.{ .Kernel, .Addresses, .Int8, .Int16, .Int64, .Float64, .Float16, .Vector16, .GenericPointer }, - .glsl450 => &.{.Shader}, + .opengl => &.{.Shader}, .vulkan => &.{ .Shader, .VariablePointersStorageBuffer, .Int8, .Int16, .Int64, .Float64, .Float16 }, else => unreachable, // TODO }; @@ -311,13 +311,13 @@ fn writeMemoryModel(spv: *SpvModule, target: std.Target) !void { .spirv64 => spec.AddressingModel.Physical64, else => unreachable, // TODO }, - .glsl450, .vulkan => spec.AddressingModel.Logical, + .opengl, .vulkan => spec.AddressingModel.Logical, else => unreachable, // TODO }; const memory_model: spec.MemoryModel = switch (target.os.tag) { .opencl => .OpenCL, - .glsl450 => .GLSL450, + .opengl => .GLSL450, .vulkan => .GLSL450, else => unreachable, }; diff --git a/src/target.zig b/src/target.zig index eb48b7b2e6..6246656fdc 100644 --- a/src/target.zig +++ b/src/target.zig @@ -196,7 +196,7 @@ pub fn supportsStackProtector(target: std.Target, backend: std.builtin.CompilerB else => {}, } switch (target.cpu.arch) { - .spirv32, .spirv64 => return false, + .spirv, .spirv32, .spirv64 => return false, else => {}, } return switch (backend) { @@ -207,7 +207,7 @@ pub fn supportsStackProtector(target: std.Target, backend: std.builtin.CompilerB pub fn clangSupportsStackProtector(target: std.Target) bool { return switch (target.cpu.arch) { - .spirv32, .spirv64 => return false, + .spirv, .spirv32, .spirv64 => return false, else => true, }; } @@ -220,7 +220,7 @@ pub fn supportsReturnAddress(target: std.Target) bool { return switch (target.cpu.arch) { .wasm32, .wasm64 => target.os.tag == .emscripten, .bpfel, .bpfeb => false, - .spirv32, .spirv64 => false, + .spirv, .spirv32, .spirv64 => false, else => true, }; } |
