Always lower asm! to valid HIR
This commit is contained in:
@@ -229,6 +229,8 @@ pub enum InlineAsmReg {
|
||||
Mips(MipsInlineAsmReg),
|
||||
SpirV(SpirVInlineAsmReg),
|
||||
Wasm(WasmInlineAsmReg),
|
||||
// Placeholder for invalid register constraints for the current target
|
||||
Err,
|
||||
}
|
||||
|
||||
impl InlineAsmReg {
|
||||
@@ -240,6 +242,7 @@ impl InlineAsmReg {
|
||||
Self::RiscV(r) => r.name(),
|
||||
Self::Hexagon(r) => r.name(),
|
||||
Self::Mips(r) => r.name(),
|
||||
Self::Err => "<reg>",
|
||||
}
|
||||
}
|
||||
|
||||
@@ -251,6 +254,7 @@ impl InlineAsmReg {
|
||||
Self::RiscV(r) => InlineAsmRegClass::RiscV(r.reg_class()),
|
||||
Self::Hexagon(r) => InlineAsmRegClass::Hexagon(r.reg_class()),
|
||||
Self::Mips(r) => InlineAsmRegClass::Mips(r.reg_class()),
|
||||
Self::Err => InlineAsmRegClass::Err,
|
||||
}
|
||||
}
|
||||
|
||||
@@ -309,6 +313,7 @@ impl InlineAsmReg {
|
||||
Self::RiscV(r) => r.emit(out, arch, modifier),
|
||||
Self::Hexagon(r) => r.emit(out, arch, modifier),
|
||||
Self::Mips(r) => r.emit(out, arch, modifier),
|
||||
Self::Err => unreachable!(),
|
||||
}
|
||||
}
|
||||
|
||||
@@ -320,6 +325,7 @@ impl InlineAsmReg {
|
||||
Self::RiscV(_) => cb(self),
|
||||
Self::Hexagon(r) => r.overlapping_regs(|r| cb(Self::Hexagon(r))),
|
||||
Self::Mips(_) => cb(self),
|
||||
Self::Err => unreachable!(),
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -346,6 +352,8 @@ pub enum InlineAsmRegClass {
|
||||
Mips(MipsInlineAsmRegClass),
|
||||
SpirV(SpirVInlineAsmRegClass),
|
||||
Wasm(WasmInlineAsmRegClass),
|
||||
// Placeholder for invalid register constraints for the current target
|
||||
Err,
|
||||
}
|
||||
|
||||
impl InlineAsmRegClass {
|
||||
@@ -360,6 +368,7 @@ impl InlineAsmRegClass {
|
||||
Self::Mips(r) => r.name(),
|
||||
Self::SpirV(r) => r.name(),
|
||||
Self::Wasm(r) => r.name(),
|
||||
Self::Err => rustc_span::symbol::sym::reg,
|
||||
}
|
||||
}
|
||||
|
||||
@@ -377,6 +386,7 @@ impl InlineAsmRegClass {
|
||||
Self::Mips(r) => r.suggest_class(arch, ty).map(InlineAsmRegClass::Mips),
|
||||
Self::SpirV(r) => r.suggest_class(arch, ty).map(InlineAsmRegClass::SpirV),
|
||||
Self::Wasm(r) => r.suggest_class(arch, ty).map(InlineAsmRegClass::Wasm),
|
||||
Self::Err => unreachable!(),
|
||||
}
|
||||
}
|
||||
|
||||
@@ -401,6 +411,7 @@ impl InlineAsmRegClass {
|
||||
Self::Mips(r) => r.suggest_modifier(arch, ty),
|
||||
Self::SpirV(r) => r.suggest_modifier(arch, ty),
|
||||
Self::Wasm(r) => r.suggest_modifier(arch, ty),
|
||||
Self::Err => unreachable!(),
|
||||
}
|
||||
}
|
||||
|
||||
@@ -421,6 +432,7 @@ impl InlineAsmRegClass {
|
||||
Self::Mips(r) => r.default_modifier(arch),
|
||||
Self::SpirV(r) => r.default_modifier(arch),
|
||||
Self::Wasm(r) => r.default_modifier(arch),
|
||||
Self::Err => unreachable!(),
|
||||
}
|
||||
}
|
||||
|
||||
@@ -440,6 +452,7 @@ impl InlineAsmRegClass {
|
||||
Self::Mips(r) => r.supported_types(arch),
|
||||
Self::SpirV(r) => r.supported_types(arch),
|
||||
Self::Wasm(r) => r.supported_types(arch),
|
||||
Self::Err => unreachable!(),
|
||||
}
|
||||
}
|
||||
|
||||
@@ -476,6 +489,7 @@ impl InlineAsmRegClass {
|
||||
Self::Mips(r) => r.valid_modifiers(arch),
|
||||
Self::SpirV(r) => r.valid_modifiers(arch),
|
||||
Self::Wasm(r) => r.valid_modifiers(arch),
|
||||
Self::Err => unreachable!(),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user