Skip to content

Commit 63e9911

Browse files
authored
Rollup merge of #95740 - Amanieu:kreg0, r=nagisa
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 #94977
2 parents 21be9da + 52cd51f commit 63e9911

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
@@ -589,6 +589,7 @@ fn reg_to_gcc(reg: InlineAsmRegOrRegClass) -> ConstraintOrRegister {
589589
| InlineAsmRegClass::X86(X86InlineAsmRegClass::ymm_reg) => "x",
590590
InlineAsmRegClass::X86(X86InlineAsmRegClass::zmm_reg) => "v",
591591
InlineAsmRegClass::X86(X86InlineAsmRegClass::kreg) => unimplemented!(),
592+
InlineAsmRegClass::X86(X86InlineAsmRegClass::kreg0) => unimplemented!(),
592593
InlineAsmRegClass::Wasm(WasmInlineAsmRegClass::local) => unimplemented!(),
593594
InlineAsmRegClass::X86(
594595
X86InlineAsmRegClass::x87_reg | X86InlineAsmRegClass::mmx_reg,
@@ -654,6 +655,7 @@ fn dummy_output_type<'gcc, 'tcx>(cx: &CodegenCx<'gcc, 'tcx>, reg: InlineAsmRegCl
654655
| InlineAsmRegClass::X86(X86InlineAsmRegClass::zmm_reg) => cx.type_f32(),
655656
InlineAsmRegClass::X86(X86InlineAsmRegClass::x87_reg) => unimplemented!(),
656657
InlineAsmRegClass::X86(X86InlineAsmRegClass::kreg) => cx.type_i16(),
658+
InlineAsmRegClass::X86(X86InlineAsmRegClass::kreg0) => cx.type_i16(),
657659
InlineAsmRegClass::Wasm(WasmInlineAsmRegClass::local) => cx.type_i32(),
658660
InlineAsmRegClass::SpirV(SpirVInlineAsmRegClass::reg) => {
659661
bug!("LLVM backend does not support SPIR-V")
@@ -784,6 +786,7 @@ fn modifier_to_gcc(arch: InlineAsmArch, reg: InlineAsmRegClass, modifier: Option
784786
_ => unreachable!(),
785787
},
786788
InlineAsmRegClass::X86(X86InlineAsmRegClass::kreg) => None,
789+
InlineAsmRegClass::X86(X86InlineAsmRegClass::kreg0) => None,
787790
InlineAsmRegClass::X86(X86InlineAsmRegClass::x87_reg | X86InlineAsmRegClass::mmx_reg) => {
788791
unreachable!("clobber-only")
789792
}

0 commit comments

Comments
 (0)