Skip to content

Commit 1dd1022

Browse files
committed
target declaration refactor
1 parent 3089687 commit 1dd1022

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::{
@@ -492,7 +492,7 @@ impl<'tcx> BuilderSpirv<'tcx> {
492492

493493
add_cap(&mut builder, &mut enabled_capabilities, Capability::Shader);
494494
if memory_model == MemoryModel::Vulkan {
495-
if version < (1, 5) {
495+
if version < SpirvVersion::V1_5 {
496496
add_ext(&mut builder, sym.spv_khr_vulkan_memory_model);
497497
}
498498
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};
@@ -101,7 +101,7 @@ impl<'tcx> CodegenCx<'tcx> {
101101
pub fn new(tcx: TyCtxt<'tcx>, codegen_unit: &'tcx CodegenUnit<'tcx>) -> Self {
102102
// Validate the target spec, as the backend doesn't control `--target`.
103103
let target_tuple = tcx.sess.opts.target_triple.tuple();
104-
let target: SpirvTarget = target_tuple.parse().unwrap_or_else(|_| {
104+
let target = SpirvTarget::parse(target_tuple).unwrap_or_else(|_| {
105105
let qualifier = if !target_tuple.starts_with("spirv-") {
106106
"non-SPIR-V "
107107
} else {

crates/rustc_codegen_spirv/src/lib.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -132,7 +132,7 @@ mod linker;
132132
mod spirv_type;
133133
mod spirv_type_constraints;
134134
mod symbols;
135-
mod target;
135+
pub mod target;
136136
mod target_feature;
137137

138138
use builder::Builder;

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_errors::registry::Registry;
45
use rustc_session::CompilerIO;
@@ -123,10 +124,7 @@ fn link_with_linker_opts(
123124
.unwrap();
124125
let sopts = rustc_session::config::build_session_options(&mut early_dcx, &matches);
125126

126-
let target = "spirv-unknown-spv1.0"
127-
.parse::<crate::target::SpirvTarget>()
128-
.unwrap()
129-
.rustc_target();
127+
let target = SpirvTarget::UNIVERSAL_1_0.rustc_target();
130128
let sm_inputs = rustc_span::source_map::SourceMapInputs {
131129
file_loader: Box::new(rustc_span::source_map::RealFileLoader),
132130
path_mapping: sopts.file_path_mapping(),

0 commit comments

Comments
 (0)