Skip to content

Commit 3cf3826

Browse files
committed
target declaration refactor
1 parent 0a60fd6 commit 3cf3826

File tree

6 files changed

+605
-99
lines changed

6 files changed

+605
-99
lines changed

crates/rustc_codegen_spirv-types/src/target.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
use std::fmt::{Debug, Formatter};
22
use thiserror::Error;
33

4+
pub const SPIRV_ARCH: &str = "spirv";
45
pub const SPIRV_TARGET_PREFIX: &str = "spirv-unknown-";
56

67
/// A well-formed rust-gpu target.

crates/rustc_codegen_spirv/src/builder_spirv.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ use crate::builder;
55
use crate::codegen_cx::CodegenCx;
66
use crate::spirv_type::SpirvType;
77
use crate::symbols::Symbols;
8-
use crate::target::SpirvTarget;
8+
use crate::target::{SpirvTarget, SpirvTargetVariant, SpirvVersion};
99
use crate::target_feature::TargetFeature;
1010
use rspirv::dr::{Builder, Instruction, Module, Operand};
1111
use rspirv::spirv::{
@@ -491,7 +491,7 @@ impl<'tcx> BuilderSpirv<'tcx> {
491491

492492
add_cap(&mut builder, &mut enabled_capabilities, Capability::Shader);
493493
if memory_model == MemoryModel::Vulkan {
494-
if version < (1, 5) {
494+
if version < SpirvVersion::V1_5 {
495495
add_ext(&mut builder, sym.spv_khr_vulkan_memory_model);
496496
}
497497
add_cap(

crates/rustc_codegen_spirv/src/codegen_cx/mod.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,11 +10,11 @@ use crate::builder_spirv::{
1010
use crate::custom_decorations::{CustomDecoration, SrcLocDecoration, ZombieDecoration};
1111
use crate::spirv_type::{SpirvType, SpirvTypePrinter, TypeCache};
1212
use crate::symbols::Symbols;
13-
use crate::target::SpirvTarget;
1413

1514
// HACK(eddyb) avoids rewriting all of the imports (see `lib.rs` and `build.rs`).
1615
use crate::maybe_pqp_cg_ssa as rustc_codegen_ssa;
1716

17+
use crate::target::SpirvTarget;
1818
use itertools::Itertools as _;
1919
use rspirv::dr::{Module, Operand};
2020
use rspirv::spirv::{Decoration, LinkageType, Word};
@@ -127,7 +127,7 @@ impl<'tcx> CodegenCx<'tcx> {
127127
pub fn new(tcx: TyCtxt<'tcx>, codegen_unit: &'tcx CodegenUnit<'tcx>) -> Self {
128128
// Validate the target spec, as the backend doesn't control `--target`.
129129
let target_tuple = tcx.sess.opts.target_triple.tuple();
130-
let target: SpirvTarget = target_tuple.parse().unwrap_or_else(|_| {
130+
let target = SpirvTarget::parse(target_tuple).unwrap_or_else(|_| {
131131
let qualifier = if !target_tuple.starts_with("spirv-") {
132132
"non-SPIR-V "
133133
} else {

crates/rustc_codegen_spirv/src/lib.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -130,7 +130,7 @@ mod linker;
130130
mod spirv_type;
131131
mod spirv_type_constraints;
132132
mod symbols;
133-
mod target;
133+
pub mod target;
134134
mod target_feature;
135135

136136
use crate::maybe_pqp_cg_ssa::back::write::ThinLtoInput;

crates/rustc_codegen_spirv/src/linker/test.rs

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
use super::{LinkResult, link};
2+
use crate::target::SpirvTarget;
23
use rspirv::dr::Module;
34
use rustc_session::CompilerIO;
45
use rustc_session::config::{Input, OutputFilenames, OutputTypes};
@@ -113,10 +114,7 @@ fn link_with_linker_opts(
113114
};
114115
let sopts = rustc_session::config::build_session_options(&mut early_dcx, &matches);
115116

116-
let target = "spirv-unknown-spv1.0"
117-
.parse::<crate::target::SpirvTarget>()
118-
.unwrap()
119-
.rustc_target();
117+
let target = SpirvTarget::UNIVERSAL_1_0.rustc_target();
120118
let sm_inputs = rustc_span::source_map::SourceMapInputs {
121119
file_loader: Box::new(rustc_span::source_map::RealFileLoader),
122120
path_mapping: sopts.file_path_mapping(),

0 commit comments

Comments
 (0)