Skip to content

Commit 7fa7f8d

Browse files
committed
add spirv-unknown-wgsl target, forcefully panic during linking
1 parent 0e4a769 commit 7fa7f8d

File tree

5 files changed

+40
-1
lines changed

5 files changed

+40
-1
lines changed

crates/rustc_codegen_spirv-target-specs/src/include_str.rs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,9 @@ impl SpirvTargetEnv {
5959
SpirvTargetEnv::Vulkan_1_4 => {
6060
include_str!("../target-specs/spirv-unknown-vulkan1.4.json")
6161
}
62+
SpirvTargetEnv::Wgsl => {
63+
include_str!("../target-specs/spirv-unknown-wgsl.json")
64+
}
6265
}
6366
}
6467
}

crates/rustc_codegen_spirv-target-specs/src/lib.rs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,8 @@ pub enum SpirvTargetEnv {
5252
Vulkan_1_3,
5353
#[strum(to_string = "vulkan1.4")]
5454
Vulkan_1_4,
55+
#[strum(to_string = "wgsl")]
56+
Wgsl,
5557
}
5658

5759
impl SpirvTargetEnv {
@@ -93,7 +95,7 @@ mod tests {
9395
#[test]
9496
pub fn test_parse_as_str_loop() {
9597
for target in SpirvTargetEnv::iter() {
96-
let parsed = SpirvTargetEnv::parse_triple(target.as_str()).unwrap();
98+
let parsed = SpirvTargetEnv::parse_triple(&target.target_triple()).unwrap();
9799
assert_eq!(target, parsed);
98100
}
99101
}
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
{
2+
"allows-weak-linkage": false,
3+
"arch": "spirv",
4+
"crt-objects-fallback": "false",
5+
"crt-static-allows-dylibs": true,
6+
"data-layout": "e-m:e-p:32:32:32-i64:64-n8:16:32:64",
7+
"dll-prefix": "",
8+
"dll-suffix": ".spv.json",
9+
"dynamic-linking": true,
10+
"emit-debug-gdb-scripts": false,
11+
"env": "wgsl",
12+
"linker-flavor": "unix",
13+
"linker-is-gnu": false,
14+
"llvm-target": "spirv-unknown-wgsl",
15+
"main-needs-argc-argv": false,
16+
"metadata": {
17+
"description": null,
18+
"host_tools": null,
19+
"std": null,
20+
"tier": null
21+
},
22+
"os": "unknown",
23+
"panic-strategy": "abort",
24+
"simd-types-indirect": false,
25+
"target-pointer-width": "32"
26+
}

crates/rustc_codegen_spirv/src/link.rs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -297,6 +297,10 @@ fn post_link_single_module(
297297
do_spirv_val(sess, &spv_binary, out_filename, val_options);
298298
}
299299

300+
if sess.target.options.env == "wgsl" {
301+
panic!("detected wgsl during linking!");
302+
}
303+
300304
{
301305
let save_modules_timer = sess.timer("link_save_modules");
302306
if let Err(e) = std::fs::write(out_filename, spirv_tools::binary::from_binary(&spv_binary))

crates/rustc_codegen_spirv/src/target.rs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,8 @@ impl TargetsExt for SpirvTargetEnv {
3333
| SpirvTargetEnv::Vulkan_1_2
3434
| SpirvTargetEnv::Vulkan_1_3
3535
| SpirvTargetEnv::Vulkan_1_4 => MemoryModel::Vulkan,
36+
37+
SpirvTargetEnv::Wgsl => MemoryModel::Vulkan,
3638
}
3739
}
3840

@@ -57,6 +59,8 @@ impl TargetsExt for SpirvTargetEnv {
5759
SpirvTargetEnv::Vulkan_1_2 => spirv_tools::TargetEnv::Vulkan_1_2,
5860
SpirvTargetEnv::Vulkan_1_3 => spirv_tools::TargetEnv::Vulkan_1_3,
5961
SpirvTargetEnv::Vulkan_1_4 => spirv_tools::TargetEnv::Vulkan_1_4,
62+
63+
SpirvTargetEnv::Wgsl => spirv_tools::TargetEnv::Vulkan_1_2,
6064
}
6165
}
6266

0 commit comments

Comments
 (0)