aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/Compilation.zig4
-rw-r--r--src/Sema.zig10
-rw-r--r--src/Zcu.zig3
-rw-r--r--src/codegen/llvm.zig30
-rw-r--r--src/link/SpirV.zig10
-rw-r--r--src/target.zig6
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,
};
}