Skip to content
This repository was archived by the owner on May 28, 2025. It is now read-only.

Commit 52cd51f

Browse files
committed
asm: Add a kreg0 register class on x86 which includes k0
Previously we only exposed a kreg register class which excludes the k0 register since it can't be used in many instructions. However k0 is a valid register and we need to have a way of marking it as clobbered for clobber_abi. Fixes rust-lang#94977
1 parent 6ce5ce8 commit 52cd51f

File tree

1 file changed

+3
-0
lines changed

1 file changed

+3
-0
lines changed

src/asm.rs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -581,6 +581,7 @@ fn reg_to_gcc(reg: InlineAsmRegOrRegClass) -> ConstraintOrRegister {
581581
| InlineAsmRegClass::X86(X86InlineAsmRegClass::ymm_reg) => "x",
582582
InlineAsmRegClass::X86(X86InlineAsmRegClass::zmm_reg) => "v",
583583
InlineAsmRegClass::X86(X86InlineAsmRegClass::kreg) => unimplemented!(),
584+
InlineAsmRegClass::X86(X86InlineAsmRegClass::kreg0) => unimplemented!(),
584585
InlineAsmRegClass::Wasm(WasmInlineAsmRegClass::local) => unimplemented!(),
585586
InlineAsmRegClass::X86(
586587
X86InlineAsmRegClass::x87_reg | X86InlineAsmRegClass::mmx_reg,
@@ -646,6 +647,7 @@ fn dummy_output_type<'gcc, 'tcx>(cx: &CodegenCx<'gcc, 'tcx>, reg: InlineAsmRegCl
646647
| InlineAsmRegClass::X86(X86InlineAsmRegClass::zmm_reg) => cx.type_f32(),
647648
InlineAsmRegClass::X86(X86InlineAsmRegClass::x87_reg) => unimplemented!(),
648649
InlineAsmRegClass::X86(X86InlineAsmRegClass::kreg) => cx.type_i16(),
650+
InlineAsmRegClass::X86(X86InlineAsmRegClass::kreg0) => cx.type_i16(),
649651
InlineAsmRegClass::Wasm(WasmInlineAsmRegClass::local) => cx.type_i32(),
650652
InlineAsmRegClass::SpirV(SpirVInlineAsmRegClass::reg) => {
651653
bug!("LLVM backend does not support SPIR-V")
@@ -760,6 +762,7 @@ fn modifier_to_gcc(arch: InlineAsmArch, reg: InlineAsmRegClass, modifier: Option
760762
_ => unreachable!(),
761763
},
762764
InlineAsmRegClass::X86(X86InlineAsmRegClass::kreg) => None,
765+
InlineAsmRegClass::X86(X86InlineAsmRegClass::kreg0) => None,
763766
InlineAsmRegClass::X86(X86InlineAsmRegClass::x87_reg | X86InlineAsmRegClass::mmx_reg) => {
764767
unreachable!("clobber-only")
765768
}

0 commit comments

Comments
 (0)