Skip to main content

rustc_target/asm/
loongarch.rs

1use std::fmt;
2
3use rustc_span::Symbol;
4
5use super::{InlineAsmArch, InlineAsmType, ModifierInfo};
6
7#[allow(non_camel_case_types)]
pub enum LoongArchInlineAsmRegClass { reg, freg, vreg, xreg, }
#[automatically_derived]
#[allow(non_camel_case_types)]
impl ::core::marker::Copy for LoongArchInlineAsmRegClass { }
#[automatically_derived]
#[doc(hidden)]
#[allow(non_camel_case_types)]
unsafe impl ::core::clone::TrivialClone for LoongArchInlineAsmRegClass { }
#[automatically_derived]
#[allow(non_camel_case_types)]
impl ::core::clone::Clone for LoongArchInlineAsmRegClass {
    #[inline]
    fn clone(&self) -> LoongArchInlineAsmRegClass { *self }
}
const _: () =
    {
        impl<__E: ::rustc_span::SpanEncoder> ::rustc_serialize::Encodable<__E>
            for LoongArchInlineAsmRegClass {
            fn encode(&self, __encoder: &mut __E) {
                let disc =
                    match *self {
                        LoongArchInlineAsmRegClass::reg => { 0usize }
                        LoongArchInlineAsmRegClass::freg => { 1usize }
                        LoongArchInlineAsmRegClass::vreg => { 2usize }
                        LoongArchInlineAsmRegClass::xreg => { 3usize }
                    };
                ::rustc_serialize::Encoder::emit_u8(__encoder, disc as u8);
                match *self {
                    LoongArchInlineAsmRegClass::reg => {}
                    LoongArchInlineAsmRegClass::freg => {}
                    LoongArchInlineAsmRegClass::vreg => {}
                    LoongArchInlineAsmRegClass::xreg => {}
                }
            }
        }
    };
const _: () =
    {
        impl<__D: ::rustc_span::SpanDecoder> ::rustc_serialize::Decodable<__D>
            for LoongArchInlineAsmRegClass {
            fn decode(__decoder: &mut __D) -> Self {
                match ::rustc_serialize::Decoder::read_u8(__decoder) as usize
                    {
                    0usize => { LoongArchInlineAsmRegClass::reg }
                    1usize => { LoongArchInlineAsmRegClass::freg }
                    2usize => { LoongArchInlineAsmRegClass::vreg }
                    3usize => { LoongArchInlineAsmRegClass::xreg }
                    n => {
                        ::core::panicking::panic_fmt(format_args!("invalid enum variant tag while decoding `LoongArchInlineAsmRegClass`, expected 0..4, actual {0}",
                                n));
                    }
                }
            }
        }
    };
#[automatically_derived]
#[allow(non_camel_case_types)]
impl ::core::fmt::Debug for LoongArchInlineAsmRegClass {
    #[inline]
    fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
        ::core::fmt::Formatter::write_str(f,
            match self {
                LoongArchInlineAsmRegClass::reg => "reg",
                LoongArchInlineAsmRegClass::freg => "freg",
                LoongArchInlineAsmRegClass::vreg => "vreg",
                LoongArchInlineAsmRegClass::xreg => "xreg",
            })
    }
}
#[automatically_derived]
#[allow(non_camel_case_types)]
impl ::core::cmp::Eq for LoongArchInlineAsmRegClass {
    #[inline]
    #[doc(hidden)]
    #[coverage(off)]
    fn assert_fields_are_eq(&self) {}
}
#[automatically_derived]
#[allow(non_camel_case_types)]
impl ::core::marker::StructuralPartialEq for LoongArchInlineAsmRegClass { }
#[automatically_derived]
#[allow(non_camel_case_types)]
impl ::core::cmp::PartialEq for LoongArchInlineAsmRegClass {
    #[inline]
    fn eq(&self, other: &LoongArchInlineAsmRegClass) -> bool {
        let __self_discr = ::core::intrinsics::discriminant_value(self);
        let __arg1_discr = ::core::intrinsics::discriminant_value(other);
        __self_discr == __arg1_discr
    }
}
#[automatically_derived]
#[allow(non_camel_case_types)]
impl ::core::cmp::PartialOrd for LoongArchInlineAsmRegClass {
    #[inline]
    fn partial_cmp(&self, other: &LoongArchInlineAsmRegClass)
        -> ::core::option::Option<::core::cmp::Ordering> {
        let __self_discr = ::core::intrinsics::discriminant_value(self);
        let __arg1_discr = ::core::intrinsics::discriminant_value(other);
        ::core::cmp::PartialOrd::partial_cmp(&__self_discr, &__arg1_discr)
    }
}
#[automatically_derived]
#[allow(non_camel_case_types)]
impl ::core::hash::Hash for LoongArchInlineAsmRegClass {
    #[inline]
    fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) {
        let __self_discr = ::core::intrinsics::discriminant_value(self);
        ::core::hash::Hash::hash(&__self_discr, state)
    }
}
const _: () =
    {
        impl ::rustc_data_structures::stable_hash::StableHash for
            LoongArchInlineAsmRegClass {
            #[inline]
            fn stable_hash<__Hcx: ::rustc_data_structures::stable_hash::StableHashCtxt>(&self,
                __hcx: &mut __Hcx,
                __hasher:
                    &mut ::rustc_data_structures::stable_hash::StableHasher) {
                ::std::mem::discriminant(self).stable_hash(__hcx, __hasher);
                match *self {
                    LoongArchInlineAsmRegClass::reg => {}
                    LoongArchInlineAsmRegClass::freg => {}
                    LoongArchInlineAsmRegClass::vreg => {}
                    LoongArchInlineAsmRegClass::xreg => {}
                }
            }
        }
    };
impl LoongArchInlineAsmRegClass {
    pub fn name(self) -> rustc_span::Symbol {
        match self {
            Self::reg => rustc_span::sym::reg,
            Self::freg => rustc_span::sym::freg,
            Self::vreg => rustc_span::sym::vreg,
            Self::xreg => rustc_span::sym::xreg,
        }
    }
    pub fn parse(name: rustc_span::Symbol)
        -> Result<Self, &'static [rustc_span::Symbol]> {
        match name {
            rustc_span::sym::reg => Ok(Self::reg),
            rustc_span::sym::freg => Ok(Self::freg),
            rustc_span::sym::vreg => Ok(Self::vreg),
            rustc_span::sym::xreg => Ok(Self::xreg),
            _ =>
                Err(&[rustc_span::sym::reg, rustc_span::sym::freg,
                                rustc_span::sym::vreg, rustc_span::sym::xreg]),
        }
    }
}
pub(super) fn regclass_map()
    ->
        rustc_data_structures::fx::FxHashMap<super::InlineAsmRegClass,
        rustc_data_structures::fx::FxIndexSet<super::InlineAsmReg>> {
    use rustc_data_structures::fx::FxHashMap;
    use rustc_data_structures::fx::FxIndexSet;
    use super::InlineAsmRegClass;
    let mut map = FxHashMap::default();
    map.insert(InlineAsmRegClass::LoongArch(LoongArchInlineAsmRegClass::reg),
        FxIndexSet::default());
    map.insert(InlineAsmRegClass::LoongArch(LoongArchInlineAsmRegClass::freg),
        FxIndexSet::default());
    map.insert(InlineAsmRegClass::LoongArch(LoongArchInlineAsmRegClass::vreg),
        FxIndexSet::default());
    map.insert(InlineAsmRegClass::LoongArch(LoongArchInlineAsmRegClass::xreg),
        FxIndexSet::default());
    map
}def_reg_class! {
8    LoongArch LoongArchInlineAsmRegClass {
9        reg,
10        freg,
11        vreg,
12        xreg,
13    }
14}
15
16impl LoongArchInlineAsmRegClass {
17    pub fn valid_modifiers(self, _arch: super::InlineAsmArch) -> &'static [char] {
18        match self {
19            Self::freg => &['w', 'u'],
20            Self::vreg => &['u'],
21            Self::xreg => &['w'],
22            _ => &[],
23        }
24    }
25
26    pub fn suggest_class(self, _arch: InlineAsmArch, _ty: InlineAsmType) -> Option<Self> {
27        None
28    }
29
30    pub fn suggest_modifier(
31        self,
32        _arch: InlineAsmArch,
33        _ty: InlineAsmType,
34    ) -> Option<ModifierInfo> {
35        None
36    }
37
38    pub fn default_modifier(self, _arch: InlineAsmArch) -> Option<ModifierInfo> {
39        None
40    }
41
42    pub fn supported_types(
43        self,
44        arch: InlineAsmArch,
45        allow_experimental_reg: bool,
46    ) -> &'static [(InlineAsmType, Option<Symbol>)] {
47        match (self, arch) {
48            (Self::reg, InlineAsmArch::LoongArch64) => {
49                {
    use super::InlineAsmType::*;
    &[(I8, None), (I16, None), (I32, None), (I64, None), (F16, None),
                (F32, None), (F64, None)]
}types! { _: I8, I16, I32, I64, F16, F32, F64; }
50            }
51            (Self::reg, InlineAsmArch::LoongArch32) => {
    use super::InlineAsmType::*;
    &[(I8, None), (I16, None), (I32, None), (F16, None), (F32, None)]
}types! { _: I8, I16, I32, F16, F32; },
52            (Self::freg, _) => {
    use super::InlineAsmType::*;
    &[(F16, Some(rustc_span::sym::f)), (F32, Some(rustc_span::sym::f)),
                (F64, Some(rustc_span::sym::d))]
}types! { f: F16, F32; d: F64; },
53            (Self::vreg, _) => {
54                if allow_experimental_reg {
55                    {
    use super::InlineAsmType::*;
    &[(F16, Some(rustc_span::sym::lsx)), (F32, Some(rustc_span::sym::lsx)),
                (F64, Some(rustc_span::sym::lsx)),
                (VecI8(16), Some(rustc_span::sym::lsx)),
                (VecI16(8), Some(rustc_span::sym::lsx)),
                (VecI32(4), Some(rustc_span::sym::lsx)),
                (VecI64(2), Some(rustc_span::sym::lsx)),
                (VecF32(4), Some(rustc_span::sym::lsx)),
                (VecF64(2), Some(rustc_span::sym::lsx))]
}types! {
56                        lsx: F16, F32, F64,
57                            VecI8(16), VecI16(8), VecI32(4), VecI64(2), VecF32(4), VecF64(2);
58                    }
59                } else {
60                    &[]
61                }
62            }
63            (Self::xreg, _) => {
64                if allow_experimental_reg {
65                    {
    use super::InlineAsmType::*;
    &[(F16, Some(rustc_span::sym::lasx)), (F32, Some(rustc_span::sym::lasx)),
                (F64, Some(rustc_span::sym::lasx)),
                (VecI8(16), Some(rustc_span::sym::lasx)),
                (VecI16(8), Some(rustc_span::sym::lasx)),
                (VecI32(4), Some(rustc_span::sym::lasx)),
                (VecI64(2), Some(rustc_span::sym::lasx)),
                (VecF32(4), Some(rustc_span::sym::lasx)),
                (VecF64(2), Some(rustc_span::sym::lasx)),
                (VecI8(32), Some(rustc_span::sym::lasx)),
                (VecI16(16), Some(rustc_span::sym::lasx)),
                (VecI32(8), Some(rustc_span::sym::lasx)),
                (VecI64(4), Some(rustc_span::sym::lasx)),
                (VecF32(8), Some(rustc_span::sym::lasx)),
                (VecF64(4), Some(rustc_span::sym::lasx))]
}types! {
66                        lasx: F16, F32, F64,
67                            VecI8(16), VecI16(8), VecI32(4), VecI64(2), VecF32(4), VecF64(2),
68                            VecI8(32), VecI16(16), VecI32(8), VecI64(4), VecF32(8), VecF64(4);
69                    }
70                } else {
71                    &[]
72                }
73            }
74            _ => {
    ::core::panicking::panic_fmt(format_args!("internal error: entered unreachable code: {0}",
            format_args!("unsupported register class")));
}unreachable!("unsupported register class"),
75        }
76    }
77}
78
79// The reserved registers are taken from <https://github.com/llvm/llvm-project/blob/main/llvm/lib/Target/LoongArch/LoongArchRegisterInfo.cpp#79>
80#[allow(unreachable_code)]
#[allow(non_camel_case_types)]
pub enum LoongArchInlineAsmReg {
    r1,
    r4,
    r5,
    r6,
    r7,
    r8,
    r9,
    r10,
    r11,
    r12,
    r13,
    r14,
    r15,
    r16,
    r17,
    r18,
    r19,
    r20,
    r23,
    r24,
    r25,
    r26,
    r27,
    r28,
    r29,
    r30,
    f0,
    f1,
    f2,
    f3,
    f4,
    f5,
    f6,
    f7,
    f8,
    f9,
    f10,
    f11,
    f12,
    f13,
    f14,
    f15,
    f16,
    f17,
    f18,
    f19,
    f20,
    f21,
    f22,
    f23,
    f24,
    f25,
    f26,
    f27,
    f28,
    f29,
    f30,
    f31,
    vr0,
    vr1,
    vr2,
    vr3,
    vr4,
    vr5,
    vr6,
    vr7,
    vr8,
    vr9,
    vr10,
    vr11,
    vr12,
    vr13,
    vr14,
    vr15,
    vr16,
    vr17,
    vr18,
    vr19,
    vr20,
    vr21,
    vr22,
    vr23,
    vr24,
    vr25,
    vr26,
    vr27,
    vr28,
    vr29,
    vr30,
    vr31,
    xr0,
    xr1,
    xr2,
    xr3,
    xr4,
    xr5,
    xr6,
    xr7,
    xr8,
    xr9,
    xr10,
    xr11,
    xr12,
    xr13,
    xr14,
    xr15,
    xr16,
    xr17,
    xr18,
    xr19,
    xr20,
    xr21,
    xr22,
    xr23,
    xr24,
    xr25,
    xr26,
    xr27,
    xr28,
    xr29,
    xr30,
    xr31,
}
#[automatically_derived]
#[allow(unreachable_code)]
#[allow(non_camel_case_types)]
impl ::core::marker::Copy for LoongArchInlineAsmReg { }
#[automatically_derived]
#[doc(hidden)]
#[allow(unreachable_code)]
#[allow(non_camel_case_types)]
unsafe impl ::core::clone::TrivialClone for LoongArchInlineAsmReg { }
#[automatically_derived]
#[allow(unreachable_code)]
#[allow(non_camel_case_types)]
impl ::core::clone::Clone for LoongArchInlineAsmReg {
    #[inline]
    fn clone(&self) -> LoongArchInlineAsmReg { *self }
}
const _: () =
    {
        impl<__E: ::rustc_span::SpanEncoder> ::rustc_serialize::Encodable<__E>
            for LoongArchInlineAsmReg {
            fn encode(&self, __encoder: &mut __E) {
                let disc =
                    match *self {
                        LoongArchInlineAsmReg::r1 => { 0usize }
                        LoongArchInlineAsmReg::r4 => { 1usize }
                        LoongArchInlineAsmReg::r5 => { 2usize }
                        LoongArchInlineAsmReg::r6 => { 3usize }
                        LoongArchInlineAsmReg::r7 => { 4usize }
                        LoongArchInlineAsmReg::r8 => { 5usize }
                        LoongArchInlineAsmReg::r9 => { 6usize }
                        LoongArchInlineAsmReg::r10 => { 7usize }
                        LoongArchInlineAsmReg::r11 => { 8usize }
                        LoongArchInlineAsmReg::r12 => { 9usize }
                        LoongArchInlineAsmReg::r13 => { 10usize }
                        LoongArchInlineAsmReg::r14 => { 11usize }
                        LoongArchInlineAsmReg::r15 => { 12usize }
                        LoongArchInlineAsmReg::r16 => { 13usize }
                        LoongArchInlineAsmReg::r17 => { 14usize }
                        LoongArchInlineAsmReg::r18 => { 15usize }
                        LoongArchInlineAsmReg::r19 => { 16usize }
                        LoongArchInlineAsmReg::r20 => { 17usize }
                        LoongArchInlineAsmReg::r23 => { 18usize }
                        LoongArchInlineAsmReg::r24 => { 19usize }
                        LoongArchInlineAsmReg::r25 => { 20usize }
                        LoongArchInlineAsmReg::r26 => { 21usize }
                        LoongArchInlineAsmReg::r27 => { 22usize }
                        LoongArchInlineAsmReg::r28 => { 23usize }
                        LoongArchInlineAsmReg::r29 => { 24usize }
                        LoongArchInlineAsmReg::r30 => { 25usize }
                        LoongArchInlineAsmReg::f0 => { 26usize }
                        LoongArchInlineAsmReg::f1 => { 27usize }
                        LoongArchInlineAsmReg::f2 => { 28usize }
                        LoongArchInlineAsmReg::f3 => { 29usize }
                        LoongArchInlineAsmReg::f4 => { 30usize }
                        LoongArchInlineAsmReg::f5 => { 31usize }
                        LoongArchInlineAsmReg::f6 => { 32usize }
                        LoongArchInlineAsmReg::f7 => { 33usize }
                        LoongArchInlineAsmReg::f8 => { 34usize }
                        LoongArchInlineAsmReg::f9 => { 35usize }
                        LoongArchInlineAsmReg::f10 => { 36usize }
                        LoongArchInlineAsmReg::f11 => { 37usize }
                        LoongArchInlineAsmReg::f12 => { 38usize }
                        LoongArchInlineAsmReg::f13 => { 39usize }
                        LoongArchInlineAsmReg::f14 => { 40usize }
                        LoongArchInlineAsmReg::f15 => { 41usize }
                        LoongArchInlineAsmReg::f16 => { 42usize }
                        LoongArchInlineAsmReg::f17 => { 43usize }
                        LoongArchInlineAsmReg::f18 => { 44usize }
                        LoongArchInlineAsmReg::f19 => { 45usize }
                        LoongArchInlineAsmReg::f20 => { 46usize }
                        LoongArchInlineAsmReg::f21 => { 47usize }
                        LoongArchInlineAsmReg::f22 => { 48usize }
                        LoongArchInlineAsmReg::f23 => { 49usize }
                        LoongArchInlineAsmReg::f24 => { 50usize }
                        LoongArchInlineAsmReg::f25 => { 51usize }
                        LoongArchInlineAsmReg::f26 => { 52usize }
                        LoongArchInlineAsmReg::f27 => { 53usize }
                        LoongArchInlineAsmReg::f28 => { 54usize }
                        LoongArchInlineAsmReg::f29 => { 55usize }
                        LoongArchInlineAsmReg::f30 => { 56usize }
                        LoongArchInlineAsmReg::f31 => { 57usize }
                        LoongArchInlineAsmReg::vr0 => { 58usize }
                        LoongArchInlineAsmReg::vr1 => { 59usize }
                        LoongArchInlineAsmReg::vr2 => { 60usize }
                        LoongArchInlineAsmReg::vr3 => { 61usize }
                        LoongArchInlineAsmReg::vr4 => { 62usize }
                        LoongArchInlineAsmReg::vr5 => { 63usize }
                        LoongArchInlineAsmReg::vr6 => { 64usize }
                        LoongArchInlineAsmReg::vr7 => { 65usize }
                        LoongArchInlineAsmReg::vr8 => { 66usize }
                        LoongArchInlineAsmReg::vr9 => { 67usize }
                        LoongArchInlineAsmReg::vr10 => { 68usize }
                        LoongArchInlineAsmReg::vr11 => { 69usize }
                        LoongArchInlineAsmReg::vr12 => { 70usize }
                        LoongArchInlineAsmReg::vr13 => { 71usize }
                        LoongArchInlineAsmReg::vr14 => { 72usize }
                        LoongArchInlineAsmReg::vr15 => { 73usize }
                        LoongArchInlineAsmReg::vr16 => { 74usize }
                        LoongArchInlineAsmReg::vr17 => { 75usize }
                        LoongArchInlineAsmReg::vr18 => { 76usize }
                        LoongArchInlineAsmReg::vr19 => { 77usize }
                        LoongArchInlineAsmReg::vr20 => { 78usize }
                        LoongArchInlineAsmReg::vr21 => { 79usize }
                        LoongArchInlineAsmReg::vr22 => { 80usize }
                        LoongArchInlineAsmReg::vr23 => { 81usize }
                        LoongArchInlineAsmReg::vr24 => { 82usize }
                        LoongArchInlineAsmReg::vr25 => { 83usize }
                        LoongArchInlineAsmReg::vr26 => { 84usize }
                        LoongArchInlineAsmReg::vr27 => { 85usize }
                        LoongArchInlineAsmReg::vr28 => { 86usize }
                        LoongArchInlineAsmReg::vr29 => { 87usize }
                        LoongArchInlineAsmReg::vr30 => { 88usize }
                        LoongArchInlineAsmReg::vr31 => { 89usize }
                        LoongArchInlineAsmReg::xr0 => { 90usize }
                        LoongArchInlineAsmReg::xr1 => { 91usize }
                        LoongArchInlineAsmReg::xr2 => { 92usize }
                        LoongArchInlineAsmReg::xr3 => { 93usize }
                        LoongArchInlineAsmReg::xr4 => { 94usize }
                        LoongArchInlineAsmReg::xr5 => { 95usize }
                        LoongArchInlineAsmReg::xr6 => { 96usize }
                        LoongArchInlineAsmReg::xr7 => { 97usize }
                        LoongArchInlineAsmReg::xr8 => { 98usize }
                        LoongArchInlineAsmReg::xr9 => { 99usize }
                        LoongArchInlineAsmReg::xr10 => { 100usize }
                        LoongArchInlineAsmReg::xr11 => { 101usize }
                        LoongArchInlineAsmReg::xr12 => { 102usize }
                        LoongArchInlineAsmReg::xr13 => { 103usize }
                        LoongArchInlineAsmReg::xr14 => { 104usize }
                        LoongArchInlineAsmReg::xr15 => { 105usize }
                        LoongArchInlineAsmReg::xr16 => { 106usize }
                        LoongArchInlineAsmReg::xr17 => { 107usize }
                        LoongArchInlineAsmReg::xr18 => { 108usize }
                        LoongArchInlineAsmReg::xr19 => { 109usize }
                        LoongArchInlineAsmReg::xr20 => { 110usize }
                        LoongArchInlineAsmReg::xr21 => { 111usize }
                        LoongArchInlineAsmReg::xr22 => { 112usize }
                        LoongArchInlineAsmReg::xr23 => { 113usize }
                        LoongArchInlineAsmReg::xr24 => { 114usize }
                        LoongArchInlineAsmReg::xr25 => { 115usize }
                        LoongArchInlineAsmReg::xr26 => { 116usize }
                        LoongArchInlineAsmReg::xr27 => { 117usize }
                        LoongArchInlineAsmReg::xr28 => { 118usize }
                        LoongArchInlineAsmReg::xr29 => { 119usize }
                        LoongArchInlineAsmReg::xr30 => { 120usize }
                        LoongArchInlineAsmReg::xr31 => { 121usize }
                    };
                ::rustc_serialize::Encoder::emit_u8(__encoder, disc as u8);
                match *self {
                    LoongArchInlineAsmReg::r1 => {}
                    LoongArchInlineAsmReg::r4 => {}
                    LoongArchInlineAsmReg::r5 => {}
                    LoongArchInlineAsmReg::r6 => {}
                    LoongArchInlineAsmReg::r7 => {}
                    LoongArchInlineAsmReg::r8 => {}
                    LoongArchInlineAsmReg::r9 => {}
                    LoongArchInlineAsmReg::r10 => {}
                    LoongArchInlineAsmReg::r11 => {}
                    LoongArchInlineAsmReg::r12 => {}
                    LoongArchInlineAsmReg::r13 => {}
                    LoongArchInlineAsmReg::r14 => {}
                    LoongArchInlineAsmReg::r15 => {}
                    LoongArchInlineAsmReg::r16 => {}
                    LoongArchInlineAsmReg::r17 => {}
                    LoongArchInlineAsmReg::r18 => {}
                    LoongArchInlineAsmReg::r19 => {}
                    LoongArchInlineAsmReg::r20 => {}
                    LoongArchInlineAsmReg::r23 => {}
                    LoongArchInlineAsmReg::r24 => {}
                    LoongArchInlineAsmReg::r25 => {}
                    LoongArchInlineAsmReg::r26 => {}
                    LoongArchInlineAsmReg::r27 => {}
                    LoongArchInlineAsmReg::r28 => {}
                    LoongArchInlineAsmReg::r29 => {}
                    LoongArchInlineAsmReg::r30 => {}
                    LoongArchInlineAsmReg::f0 => {}
                    LoongArchInlineAsmReg::f1 => {}
                    LoongArchInlineAsmReg::f2 => {}
                    LoongArchInlineAsmReg::f3 => {}
                    LoongArchInlineAsmReg::f4 => {}
                    LoongArchInlineAsmReg::f5 => {}
                    LoongArchInlineAsmReg::f6 => {}
                    LoongArchInlineAsmReg::f7 => {}
                    LoongArchInlineAsmReg::f8 => {}
                    LoongArchInlineAsmReg::f9 => {}
                    LoongArchInlineAsmReg::f10 => {}
                    LoongArchInlineAsmReg::f11 => {}
                    LoongArchInlineAsmReg::f12 => {}
                    LoongArchInlineAsmReg::f13 => {}
                    LoongArchInlineAsmReg::f14 => {}
                    LoongArchInlineAsmReg::f15 => {}
                    LoongArchInlineAsmReg::f16 => {}
                    LoongArchInlineAsmReg::f17 => {}
                    LoongArchInlineAsmReg::f18 => {}
                    LoongArchInlineAsmReg::f19 => {}
                    LoongArchInlineAsmReg::f20 => {}
                    LoongArchInlineAsmReg::f21 => {}
                    LoongArchInlineAsmReg::f22 => {}
                    LoongArchInlineAsmReg::f23 => {}
                    LoongArchInlineAsmReg::f24 => {}
                    LoongArchInlineAsmReg::f25 => {}
                    LoongArchInlineAsmReg::f26 => {}
                    LoongArchInlineAsmReg::f27 => {}
                    LoongArchInlineAsmReg::f28 => {}
                    LoongArchInlineAsmReg::f29 => {}
                    LoongArchInlineAsmReg::f30 => {}
                    LoongArchInlineAsmReg::f31 => {}
                    LoongArchInlineAsmReg::vr0 => {}
                    LoongArchInlineAsmReg::vr1 => {}
                    LoongArchInlineAsmReg::vr2 => {}
                    LoongArchInlineAsmReg::vr3 => {}
                    LoongArchInlineAsmReg::vr4 => {}
                    LoongArchInlineAsmReg::vr5 => {}
                    LoongArchInlineAsmReg::vr6 => {}
                    LoongArchInlineAsmReg::vr7 => {}
                    LoongArchInlineAsmReg::vr8 => {}
                    LoongArchInlineAsmReg::vr9 => {}
                    LoongArchInlineAsmReg::vr10 => {}
                    LoongArchInlineAsmReg::vr11 => {}
                    LoongArchInlineAsmReg::vr12 => {}
                    LoongArchInlineAsmReg::vr13 => {}
                    LoongArchInlineAsmReg::vr14 => {}
                    LoongArchInlineAsmReg::vr15 => {}
                    LoongArchInlineAsmReg::vr16 => {}
                    LoongArchInlineAsmReg::vr17 => {}
                    LoongArchInlineAsmReg::vr18 => {}
                    LoongArchInlineAsmReg::vr19 => {}
                    LoongArchInlineAsmReg::vr20 => {}
                    LoongArchInlineAsmReg::vr21 => {}
                    LoongArchInlineAsmReg::vr22 => {}
                    LoongArchInlineAsmReg::vr23 => {}
                    LoongArchInlineAsmReg::vr24 => {}
                    LoongArchInlineAsmReg::vr25 => {}
                    LoongArchInlineAsmReg::vr26 => {}
                    LoongArchInlineAsmReg::vr27 => {}
                    LoongArchInlineAsmReg::vr28 => {}
                    LoongArchInlineAsmReg::vr29 => {}
                    LoongArchInlineAsmReg::vr30 => {}
                    LoongArchInlineAsmReg::vr31 => {}
                    LoongArchInlineAsmReg::xr0 => {}
                    LoongArchInlineAsmReg::xr1 => {}
                    LoongArchInlineAsmReg::xr2 => {}
                    LoongArchInlineAsmReg::xr3 => {}
                    LoongArchInlineAsmReg::xr4 => {}
                    LoongArchInlineAsmReg::xr5 => {}
                    LoongArchInlineAsmReg::xr6 => {}
                    LoongArchInlineAsmReg::xr7 => {}
                    LoongArchInlineAsmReg::xr8 => {}
                    LoongArchInlineAsmReg::xr9 => {}
                    LoongArchInlineAsmReg::xr10 => {}
                    LoongArchInlineAsmReg::xr11 => {}
                    LoongArchInlineAsmReg::xr12 => {}
                    LoongArchInlineAsmReg::xr13 => {}
                    LoongArchInlineAsmReg::xr14 => {}
                    LoongArchInlineAsmReg::xr15 => {}
                    LoongArchInlineAsmReg::xr16 => {}
                    LoongArchInlineAsmReg::xr17 => {}
                    LoongArchInlineAsmReg::xr18 => {}
                    LoongArchInlineAsmReg::xr19 => {}
                    LoongArchInlineAsmReg::xr20 => {}
                    LoongArchInlineAsmReg::xr21 => {}
                    LoongArchInlineAsmReg::xr22 => {}
                    LoongArchInlineAsmReg::xr23 => {}
                    LoongArchInlineAsmReg::xr24 => {}
                    LoongArchInlineAsmReg::xr25 => {}
                    LoongArchInlineAsmReg::xr26 => {}
                    LoongArchInlineAsmReg::xr27 => {}
                    LoongArchInlineAsmReg::xr28 => {}
                    LoongArchInlineAsmReg::xr29 => {}
                    LoongArchInlineAsmReg::xr30 => {}
                    LoongArchInlineAsmReg::xr31 => {}
                }
            }
        }
    };
const _: () =
    {
        impl<__D: ::rustc_span::SpanDecoder> ::rustc_serialize::Decodable<__D>
            for LoongArchInlineAsmReg {
            fn decode(__decoder: &mut __D) -> Self {
                match ::rustc_serialize::Decoder::read_u8(__decoder) as usize
                    {
                    0usize => { LoongArchInlineAsmReg::r1 }
                    1usize => { LoongArchInlineAsmReg::r4 }
                    2usize => { LoongArchInlineAsmReg::r5 }
                    3usize => { LoongArchInlineAsmReg::r6 }
                    4usize => { LoongArchInlineAsmReg::r7 }
                    5usize => { LoongArchInlineAsmReg::r8 }
                    6usize => { LoongArchInlineAsmReg::r9 }
                    7usize => { LoongArchInlineAsmReg::r10 }
                    8usize => { LoongArchInlineAsmReg::r11 }
                    9usize => { LoongArchInlineAsmReg::r12 }
                    10usize => { LoongArchInlineAsmReg::r13 }
                    11usize => { LoongArchInlineAsmReg::r14 }
                    12usize => { LoongArchInlineAsmReg::r15 }
                    13usize => { LoongArchInlineAsmReg::r16 }
                    14usize => { LoongArchInlineAsmReg::r17 }
                    15usize => { LoongArchInlineAsmReg::r18 }
                    16usize => { LoongArchInlineAsmReg::r19 }
                    17usize => { LoongArchInlineAsmReg::r20 }
                    18usize => { LoongArchInlineAsmReg::r23 }
                    19usize => { LoongArchInlineAsmReg::r24 }
                    20usize => { LoongArchInlineAsmReg::r25 }
                    21usize => { LoongArchInlineAsmReg::r26 }
                    22usize => { LoongArchInlineAsmReg::r27 }
                    23usize => { LoongArchInlineAsmReg::r28 }
                    24usize => { LoongArchInlineAsmReg::r29 }
                    25usize => { LoongArchInlineAsmReg::r30 }
                    26usize => { LoongArchInlineAsmReg::f0 }
                    27usize => { LoongArchInlineAsmReg::f1 }
                    28usize => { LoongArchInlineAsmReg::f2 }
                    29usize => { LoongArchInlineAsmReg::f3 }
                    30usize => { LoongArchInlineAsmReg::f4 }
                    31usize => { LoongArchInlineAsmReg::f5 }
                    32usize => { LoongArchInlineAsmReg::f6 }
                    33usize => { LoongArchInlineAsmReg::f7 }
                    34usize => { LoongArchInlineAsmReg::f8 }
                    35usize => { LoongArchInlineAsmReg::f9 }
                    36usize => { LoongArchInlineAsmReg::f10 }
                    37usize => { LoongArchInlineAsmReg::f11 }
                    38usize => { LoongArchInlineAsmReg::f12 }
                    39usize => { LoongArchInlineAsmReg::f13 }
                    40usize => { LoongArchInlineAsmReg::f14 }
                    41usize => { LoongArchInlineAsmReg::f15 }
                    42usize => { LoongArchInlineAsmReg::f16 }
                    43usize => { LoongArchInlineAsmReg::f17 }
                    44usize => { LoongArchInlineAsmReg::f18 }
                    45usize => { LoongArchInlineAsmReg::f19 }
                    46usize => { LoongArchInlineAsmReg::f20 }
                    47usize => { LoongArchInlineAsmReg::f21 }
                    48usize => { LoongArchInlineAsmReg::f22 }
                    49usize => { LoongArchInlineAsmReg::f23 }
                    50usize => { LoongArchInlineAsmReg::f24 }
                    51usize => { LoongArchInlineAsmReg::f25 }
                    52usize => { LoongArchInlineAsmReg::f26 }
                    53usize => { LoongArchInlineAsmReg::f27 }
                    54usize => { LoongArchInlineAsmReg::f28 }
                    55usize => { LoongArchInlineAsmReg::f29 }
                    56usize => { LoongArchInlineAsmReg::f30 }
                    57usize => { LoongArchInlineAsmReg::f31 }
                    58usize => { LoongArchInlineAsmReg::vr0 }
                    59usize => { LoongArchInlineAsmReg::vr1 }
                    60usize => { LoongArchInlineAsmReg::vr2 }
                    61usize => { LoongArchInlineAsmReg::vr3 }
                    62usize => { LoongArchInlineAsmReg::vr4 }
                    63usize => { LoongArchInlineAsmReg::vr5 }
                    64usize => { LoongArchInlineAsmReg::vr6 }
                    65usize => { LoongArchInlineAsmReg::vr7 }
                    66usize => { LoongArchInlineAsmReg::vr8 }
                    67usize => { LoongArchInlineAsmReg::vr9 }
                    68usize => { LoongArchInlineAsmReg::vr10 }
                    69usize => { LoongArchInlineAsmReg::vr11 }
                    70usize => { LoongArchInlineAsmReg::vr12 }
                    71usize => { LoongArchInlineAsmReg::vr13 }
                    72usize => { LoongArchInlineAsmReg::vr14 }
                    73usize => { LoongArchInlineAsmReg::vr15 }
                    74usize => { LoongArchInlineAsmReg::vr16 }
                    75usize => { LoongArchInlineAsmReg::vr17 }
                    76usize => { LoongArchInlineAsmReg::vr18 }
                    77usize => { LoongArchInlineAsmReg::vr19 }
                    78usize => { LoongArchInlineAsmReg::vr20 }
                    79usize => { LoongArchInlineAsmReg::vr21 }
                    80usize => { LoongArchInlineAsmReg::vr22 }
                    81usize => { LoongArchInlineAsmReg::vr23 }
                    82usize => { LoongArchInlineAsmReg::vr24 }
                    83usize => { LoongArchInlineAsmReg::vr25 }
                    84usize => { LoongArchInlineAsmReg::vr26 }
                    85usize => { LoongArchInlineAsmReg::vr27 }
                    86usize => { LoongArchInlineAsmReg::vr28 }
                    87usize => { LoongArchInlineAsmReg::vr29 }
                    88usize => { LoongArchInlineAsmReg::vr30 }
                    89usize => { LoongArchInlineAsmReg::vr31 }
                    90usize => { LoongArchInlineAsmReg::xr0 }
                    91usize => { LoongArchInlineAsmReg::xr1 }
                    92usize => { LoongArchInlineAsmReg::xr2 }
                    93usize => { LoongArchInlineAsmReg::xr3 }
                    94usize => { LoongArchInlineAsmReg::xr4 }
                    95usize => { LoongArchInlineAsmReg::xr5 }
                    96usize => { LoongArchInlineAsmReg::xr6 }
                    97usize => { LoongArchInlineAsmReg::xr7 }
                    98usize => { LoongArchInlineAsmReg::xr8 }
                    99usize => { LoongArchInlineAsmReg::xr9 }
                    100usize => { LoongArchInlineAsmReg::xr10 }
                    101usize => { LoongArchInlineAsmReg::xr11 }
                    102usize => { LoongArchInlineAsmReg::xr12 }
                    103usize => { LoongArchInlineAsmReg::xr13 }
                    104usize => { LoongArchInlineAsmReg::xr14 }
                    105usize => { LoongArchInlineAsmReg::xr15 }
                    106usize => { LoongArchInlineAsmReg::xr16 }
                    107usize => { LoongArchInlineAsmReg::xr17 }
                    108usize => { LoongArchInlineAsmReg::xr18 }
                    109usize => { LoongArchInlineAsmReg::xr19 }
                    110usize => { LoongArchInlineAsmReg::xr20 }
                    111usize => { LoongArchInlineAsmReg::xr21 }
                    112usize => { LoongArchInlineAsmReg::xr22 }
                    113usize => { LoongArchInlineAsmReg::xr23 }
                    114usize => { LoongArchInlineAsmReg::xr24 }
                    115usize => { LoongArchInlineAsmReg::xr25 }
                    116usize => { LoongArchInlineAsmReg::xr26 }
                    117usize => { LoongArchInlineAsmReg::xr27 }
                    118usize => { LoongArchInlineAsmReg::xr28 }
                    119usize => { LoongArchInlineAsmReg::xr29 }
                    120usize => { LoongArchInlineAsmReg::xr30 }
                    121usize => { LoongArchInlineAsmReg::xr31 }
                    n => {
                        ::core::panicking::panic_fmt(format_args!("invalid enum variant tag while decoding `LoongArchInlineAsmReg`, expected 0..122, actual {0}",
                                n));
                    }
                }
            }
        }
    };
#[automatically_derived]
#[allow(unreachable_code)]
#[allow(non_camel_case_types)]
impl ::core::fmt::Debug for LoongArchInlineAsmReg {
    #[inline]
    fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
        ::core::fmt::Formatter::write_str(f,
            match self {
                LoongArchInlineAsmReg::r1 => "r1",
                LoongArchInlineAsmReg::r4 => "r4",
                LoongArchInlineAsmReg::r5 => "r5",
                LoongArchInlineAsmReg::r6 => "r6",
                LoongArchInlineAsmReg::r7 => "r7",
                LoongArchInlineAsmReg::r8 => "r8",
                LoongArchInlineAsmReg::r9 => "r9",
                LoongArchInlineAsmReg::r10 => "r10",
                LoongArchInlineAsmReg::r11 => "r11",
                LoongArchInlineAsmReg::r12 => "r12",
                LoongArchInlineAsmReg::r13 => "r13",
                LoongArchInlineAsmReg::r14 => "r14",
                LoongArchInlineAsmReg::r15 => "r15",
                LoongArchInlineAsmReg::r16 => "r16",
                LoongArchInlineAsmReg::r17 => "r17",
                LoongArchInlineAsmReg::r18 => "r18",
                LoongArchInlineAsmReg::r19 => "r19",
                LoongArchInlineAsmReg::r20 => "r20",
                LoongArchInlineAsmReg::r23 => "r23",
                LoongArchInlineAsmReg::r24 => "r24",
                LoongArchInlineAsmReg::r25 => "r25",
                LoongArchInlineAsmReg::r26 => "r26",
                LoongArchInlineAsmReg::r27 => "r27",
                LoongArchInlineAsmReg::r28 => "r28",
                LoongArchInlineAsmReg::r29 => "r29",
                LoongArchInlineAsmReg::r30 => "r30",
                LoongArchInlineAsmReg::f0 => "f0",
                LoongArchInlineAsmReg::f1 => "f1",
                LoongArchInlineAsmReg::f2 => "f2",
                LoongArchInlineAsmReg::f3 => "f3",
                LoongArchInlineAsmReg::f4 => "f4",
                LoongArchInlineAsmReg::f5 => "f5",
                LoongArchInlineAsmReg::f6 => "f6",
                LoongArchInlineAsmReg::f7 => "f7",
                LoongArchInlineAsmReg::f8 => "f8",
                LoongArchInlineAsmReg::f9 => "f9",
                LoongArchInlineAsmReg::f10 => "f10",
                LoongArchInlineAsmReg::f11 => "f11",
                LoongArchInlineAsmReg::f12 => "f12",
                LoongArchInlineAsmReg::f13 => "f13",
                LoongArchInlineAsmReg::f14 => "f14",
                LoongArchInlineAsmReg::f15 => "f15",
                LoongArchInlineAsmReg::f16 => "f16",
                LoongArchInlineAsmReg::f17 => "f17",
                LoongArchInlineAsmReg::f18 => "f18",
                LoongArchInlineAsmReg::f19 => "f19",
                LoongArchInlineAsmReg::f20 => "f20",
                LoongArchInlineAsmReg::f21 => "f21",
                LoongArchInlineAsmReg::f22 => "f22",
                LoongArchInlineAsmReg::f23 => "f23",
                LoongArchInlineAsmReg::f24 => "f24",
                LoongArchInlineAsmReg::f25 => "f25",
                LoongArchInlineAsmReg::f26 => "f26",
                LoongArchInlineAsmReg::f27 => "f27",
                LoongArchInlineAsmReg::f28 => "f28",
                LoongArchInlineAsmReg::f29 => "f29",
                LoongArchInlineAsmReg::f30 => "f30",
                LoongArchInlineAsmReg::f31 => "f31",
                LoongArchInlineAsmReg::vr0 => "vr0",
                LoongArchInlineAsmReg::vr1 => "vr1",
                LoongArchInlineAsmReg::vr2 => "vr2",
                LoongArchInlineAsmReg::vr3 => "vr3",
                LoongArchInlineAsmReg::vr4 => "vr4",
                LoongArchInlineAsmReg::vr5 => "vr5",
                LoongArchInlineAsmReg::vr6 => "vr6",
                LoongArchInlineAsmReg::vr7 => "vr7",
                LoongArchInlineAsmReg::vr8 => "vr8",
                LoongArchInlineAsmReg::vr9 => "vr9",
                LoongArchInlineAsmReg::vr10 => "vr10",
                LoongArchInlineAsmReg::vr11 => "vr11",
                LoongArchInlineAsmReg::vr12 => "vr12",
                LoongArchInlineAsmReg::vr13 => "vr13",
                LoongArchInlineAsmReg::vr14 => "vr14",
                LoongArchInlineAsmReg::vr15 => "vr15",
                LoongArchInlineAsmReg::vr16 => "vr16",
                LoongArchInlineAsmReg::vr17 => "vr17",
                LoongArchInlineAsmReg::vr18 => "vr18",
                LoongArchInlineAsmReg::vr19 => "vr19",
                LoongArchInlineAsmReg::vr20 => "vr20",
                LoongArchInlineAsmReg::vr21 => "vr21",
                LoongArchInlineAsmReg::vr22 => "vr22",
                LoongArchInlineAsmReg::vr23 => "vr23",
                LoongArchInlineAsmReg::vr24 => "vr24",
                LoongArchInlineAsmReg::vr25 => "vr25",
                LoongArchInlineAsmReg::vr26 => "vr26",
                LoongArchInlineAsmReg::vr27 => "vr27",
                LoongArchInlineAsmReg::vr28 => "vr28",
                LoongArchInlineAsmReg::vr29 => "vr29",
                LoongArchInlineAsmReg::vr30 => "vr30",
                LoongArchInlineAsmReg::vr31 => "vr31",
                LoongArchInlineAsmReg::xr0 => "xr0",
                LoongArchInlineAsmReg::xr1 => "xr1",
                LoongArchInlineAsmReg::xr2 => "xr2",
                LoongArchInlineAsmReg::xr3 => "xr3",
                LoongArchInlineAsmReg::xr4 => "xr4",
                LoongArchInlineAsmReg::xr5 => "xr5",
                LoongArchInlineAsmReg::xr6 => "xr6",
                LoongArchInlineAsmReg::xr7 => "xr7",
                LoongArchInlineAsmReg::xr8 => "xr8",
                LoongArchInlineAsmReg::xr9 => "xr9",
                LoongArchInlineAsmReg::xr10 => "xr10",
                LoongArchInlineAsmReg::xr11 => "xr11",
                LoongArchInlineAsmReg::xr12 => "xr12",
                LoongArchInlineAsmReg::xr13 => "xr13",
                LoongArchInlineAsmReg::xr14 => "xr14",
                LoongArchInlineAsmReg::xr15 => "xr15",
                LoongArchInlineAsmReg::xr16 => "xr16",
                LoongArchInlineAsmReg::xr17 => "xr17",
                LoongArchInlineAsmReg::xr18 => "xr18",
                LoongArchInlineAsmReg::xr19 => "xr19",
                LoongArchInlineAsmReg::xr20 => "xr20",
                LoongArchInlineAsmReg::xr21 => "xr21",
                LoongArchInlineAsmReg::xr22 => "xr22",
                LoongArchInlineAsmReg::xr23 => "xr23",
                LoongArchInlineAsmReg::xr24 => "xr24",
                LoongArchInlineAsmReg::xr25 => "xr25",
                LoongArchInlineAsmReg::xr26 => "xr26",
                LoongArchInlineAsmReg::xr27 => "xr27",
                LoongArchInlineAsmReg::xr28 => "xr28",
                LoongArchInlineAsmReg::xr29 => "xr29",
                LoongArchInlineAsmReg::xr30 => "xr30",
                LoongArchInlineAsmReg::xr31 => "xr31",
            })
    }
}
#[automatically_derived]
#[allow(unreachable_code)]
#[allow(non_camel_case_types)]
impl ::core::cmp::Eq for LoongArchInlineAsmReg {
    #[inline]
    #[doc(hidden)]
    #[coverage(off)]
    fn assert_fields_are_eq(&self) {}
}
#[automatically_derived]
#[allow(unreachable_code)]
#[allow(non_camel_case_types)]
impl ::core::marker::StructuralPartialEq for LoongArchInlineAsmReg { }
#[automatically_derived]
#[allow(unreachable_code)]
#[allow(non_camel_case_types)]
impl ::core::cmp::PartialEq for LoongArchInlineAsmReg {
    #[inline]
    fn eq(&self, other: &LoongArchInlineAsmReg) -> bool {
        let __self_discr = ::core::intrinsics::discriminant_value(self);
        let __arg1_discr = ::core::intrinsics::discriminant_value(other);
        __self_discr == __arg1_discr
    }
}
#[automatically_derived]
#[allow(unreachable_code)]
#[allow(non_camel_case_types)]
impl ::core::cmp::PartialOrd for LoongArchInlineAsmReg {
    #[inline]
    fn partial_cmp(&self, other: &LoongArchInlineAsmReg)
        -> ::core::option::Option<::core::cmp::Ordering> {
        let __self_discr = ::core::intrinsics::discriminant_value(self);
        let __arg1_discr = ::core::intrinsics::discriminant_value(other);
        ::core::cmp::PartialOrd::partial_cmp(&__self_discr, &__arg1_discr)
    }
}
#[automatically_derived]
#[allow(unreachable_code)]
#[allow(non_camel_case_types)]
impl ::core::hash::Hash for LoongArchInlineAsmReg {
    #[inline]
    fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) {
        let __self_discr = ::core::intrinsics::discriminant_value(self);
        ::core::hash::Hash::hash(&__self_discr, state)
    }
}
const _: () =
    {
        impl ::rustc_data_structures::stable_hash::StableHash for
            LoongArchInlineAsmReg {
            #[inline]
            fn stable_hash<__Hcx: ::rustc_data_structures::stable_hash::StableHashCtxt>(&self,
                __hcx: &mut __Hcx,
                __hasher:
                    &mut ::rustc_data_structures::stable_hash::StableHasher) {
                ::std::mem::discriminant(self).stable_hash(__hcx, __hasher);
                match *self {
                    LoongArchInlineAsmReg::r1 => {}
                    LoongArchInlineAsmReg::r4 => {}
                    LoongArchInlineAsmReg::r5 => {}
                    LoongArchInlineAsmReg::r6 => {}
                    LoongArchInlineAsmReg::r7 => {}
                    LoongArchInlineAsmReg::r8 => {}
                    LoongArchInlineAsmReg::r9 => {}
                    LoongArchInlineAsmReg::r10 => {}
                    LoongArchInlineAsmReg::r11 => {}
                    LoongArchInlineAsmReg::r12 => {}
                    LoongArchInlineAsmReg::r13 => {}
                    LoongArchInlineAsmReg::r14 => {}
                    LoongArchInlineAsmReg::r15 => {}
                    LoongArchInlineAsmReg::r16 => {}
                    LoongArchInlineAsmReg::r17 => {}
                    LoongArchInlineAsmReg::r18 => {}
                    LoongArchInlineAsmReg::r19 => {}
                    LoongArchInlineAsmReg::r20 => {}
                    LoongArchInlineAsmReg::r23 => {}
                    LoongArchInlineAsmReg::r24 => {}
                    LoongArchInlineAsmReg::r25 => {}
                    LoongArchInlineAsmReg::r26 => {}
                    LoongArchInlineAsmReg::r27 => {}
                    LoongArchInlineAsmReg::r28 => {}
                    LoongArchInlineAsmReg::r29 => {}
                    LoongArchInlineAsmReg::r30 => {}
                    LoongArchInlineAsmReg::f0 => {}
                    LoongArchInlineAsmReg::f1 => {}
                    LoongArchInlineAsmReg::f2 => {}
                    LoongArchInlineAsmReg::f3 => {}
                    LoongArchInlineAsmReg::f4 => {}
                    LoongArchInlineAsmReg::f5 => {}
                    LoongArchInlineAsmReg::f6 => {}
                    LoongArchInlineAsmReg::f7 => {}
                    LoongArchInlineAsmReg::f8 => {}
                    LoongArchInlineAsmReg::f9 => {}
                    LoongArchInlineAsmReg::f10 => {}
                    LoongArchInlineAsmReg::f11 => {}
                    LoongArchInlineAsmReg::f12 => {}
                    LoongArchInlineAsmReg::f13 => {}
                    LoongArchInlineAsmReg::f14 => {}
                    LoongArchInlineAsmReg::f15 => {}
                    LoongArchInlineAsmReg::f16 => {}
                    LoongArchInlineAsmReg::f17 => {}
                    LoongArchInlineAsmReg::f18 => {}
                    LoongArchInlineAsmReg::f19 => {}
                    LoongArchInlineAsmReg::f20 => {}
                    LoongArchInlineAsmReg::f21 => {}
                    LoongArchInlineAsmReg::f22 => {}
                    LoongArchInlineAsmReg::f23 => {}
                    LoongArchInlineAsmReg::f24 => {}
                    LoongArchInlineAsmReg::f25 => {}
                    LoongArchInlineAsmReg::f26 => {}
                    LoongArchInlineAsmReg::f27 => {}
                    LoongArchInlineAsmReg::f28 => {}
                    LoongArchInlineAsmReg::f29 => {}
                    LoongArchInlineAsmReg::f30 => {}
                    LoongArchInlineAsmReg::f31 => {}
                    LoongArchInlineAsmReg::vr0 => {}
                    LoongArchInlineAsmReg::vr1 => {}
                    LoongArchInlineAsmReg::vr2 => {}
                    LoongArchInlineAsmReg::vr3 => {}
                    LoongArchInlineAsmReg::vr4 => {}
                    LoongArchInlineAsmReg::vr5 => {}
                    LoongArchInlineAsmReg::vr6 => {}
                    LoongArchInlineAsmReg::vr7 => {}
                    LoongArchInlineAsmReg::vr8 => {}
                    LoongArchInlineAsmReg::vr9 => {}
                    LoongArchInlineAsmReg::vr10 => {}
                    LoongArchInlineAsmReg::vr11 => {}
                    LoongArchInlineAsmReg::vr12 => {}
                    LoongArchInlineAsmReg::vr13 => {}
                    LoongArchInlineAsmReg::vr14 => {}
                    LoongArchInlineAsmReg::vr15 => {}
                    LoongArchInlineAsmReg::vr16 => {}
                    LoongArchInlineAsmReg::vr17 => {}
                    LoongArchInlineAsmReg::vr18 => {}
                    LoongArchInlineAsmReg::vr19 => {}
                    LoongArchInlineAsmReg::vr20 => {}
                    LoongArchInlineAsmReg::vr21 => {}
                    LoongArchInlineAsmReg::vr22 => {}
                    LoongArchInlineAsmReg::vr23 => {}
                    LoongArchInlineAsmReg::vr24 => {}
                    LoongArchInlineAsmReg::vr25 => {}
                    LoongArchInlineAsmReg::vr26 => {}
                    LoongArchInlineAsmReg::vr27 => {}
                    LoongArchInlineAsmReg::vr28 => {}
                    LoongArchInlineAsmReg::vr29 => {}
                    LoongArchInlineAsmReg::vr30 => {}
                    LoongArchInlineAsmReg::vr31 => {}
                    LoongArchInlineAsmReg::xr0 => {}
                    LoongArchInlineAsmReg::xr1 => {}
                    LoongArchInlineAsmReg::xr2 => {}
                    LoongArchInlineAsmReg::xr3 => {}
                    LoongArchInlineAsmReg::xr4 => {}
                    LoongArchInlineAsmReg::xr5 => {}
                    LoongArchInlineAsmReg::xr6 => {}
                    LoongArchInlineAsmReg::xr7 => {}
                    LoongArchInlineAsmReg::xr8 => {}
                    LoongArchInlineAsmReg::xr9 => {}
                    LoongArchInlineAsmReg::xr10 => {}
                    LoongArchInlineAsmReg::xr11 => {}
                    LoongArchInlineAsmReg::xr12 => {}
                    LoongArchInlineAsmReg::xr13 => {}
                    LoongArchInlineAsmReg::xr14 => {}
                    LoongArchInlineAsmReg::xr15 => {}
                    LoongArchInlineAsmReg::xr16 => {}
                    LoongArchInlineAsmReg::xr17 => {}
                    LoongArchInlineAsmReg::xr18 => {}
                    LoongArchInlineAsmReg::xr19 => {}
                    LoongArchInlineAsmReg::xr20 => {}
                    LoongArchInlineAsmReg::xr21 => {}
                    LoongArchInlineAsmReg::xr22 => {}
                    LoongArchInlineAsmReg::xr23 => {}
                    LoongArchInlineAsmReg::xr24 => {}
                    LoongArchInlineAsmReg::xr25 => {}
                    LoongArchInlineAsmReg::xr26 => {}
                    LoongArchInlineAsmReg::xr27 => {}
                    LoongArchInlineAsmReg::xr28 => {}
                    LoongArchInlineAsmReg::xr29 => {}
                    LoongArchInlineAsmReg::xr30 => {}
                    LoongArchInlineAsmReg::xr31 => {}
                }
            }
        }
    };
impl LoongArchInlineAsmReg {
    pub fn name(self) -> &'static str {
        match self {
            Self::r1 => "$r1",
            Self::r4 => "$r4",
            Self::r5 => "$r5",
            Self::r6 => "$r6",
            Self::r7 => "$r7",
            Self::r8 => "$r8",
            Self::r9 => "$r9",
            Self::r10 => "$r10",
            Self::r11 => "$r11",
            Self::r12 => "$r12",
            Self::r13 => "$r13",
            Self::r14 => "$r14",
            Self::r15 => "$r15",
            Self::r16 => "$r16",
            Self::r17 => "$r17",
            Self::r18 => "$r18",
            Self::r19 => "$r19",
            Self::r20 => "$r20",
            Self::r23 => "$r23",
            Self::r24 => "$r24",
            Self::r25 => "$r25",
            Self::r26 => "$r26",
            Self::r27 => "$r27",
            Self::r28 => "$r28",
            Self::r29 => "$r29",
            Self::r30 => "$r30",
            Self::f0 => "$f0",
            Self::f1 => "$f1",
            Self::f2 => "$f2",
            Self::f3 => "$f3",
            Self::f4 => "$f4",
            Self::f5 => "$f5",
            Self::f6 => "$f6",
            Self::f7 => "$f7",
            Self::f8 => "$f8",
            Self::f9 => "$f9",
            Self::f10 => "$f10",
            Self::f11 => "$f11",
            Self::f12 => "$f12",
            Self::f13 => "$f13",
            Self::f14 => "$f14",
            Self::f15 => "$f15",
            Self::f16 => "$f16",
            Self::f17 => "$f17",
            Self::f18 => "$f18",
            Self::f19 => "$f19",
            Self::f20 => "$f20",
            Self::f21 => "$f21",
            Self::f22 => "$f22",
            Self::f23 => "$f23",
            Self::f24 => "$f24",
            Self::f25 => "$f25",
            Self::f26 => "$f26",
            Self::f27 => "$f27",
            Self::f28 => "$f28",
            Self::f29 => "$f29",
            Self::f30 => "$f30",
            Self::f31 => "$f31",
            Self::vr0 => "$vr0",
            Self::vr1 => "$vr1",
            Self::vr2 => "$vr2",
            Self::vr3 => "$vr3",
            Self::vr4 => "$vr4",
            Self::vr5 => "$vr5",
            Self::vr6 => "$vr6",
            Self::vr7 => "$vr7",
            Self::vr8 => "$vr8",
            Self::vr9 => "$vr9",
            Self::vr10 => "$vr10",
            Self::vr11 => "$vr11",
            Self::vr12 => "$vr12",
            Self::vr13 => "$vr13",
            Self::vr14 => "$vr14",
            Self::vr15 => "$vr15",
            Self::vr16 => "$vr16",
            Self::vr17 => "$vr17",
            Self::vr18 => "$vr18",
            Self::vr19 => "$vr19",
            Self::vr20 => "$vr20",
            Self::vr21 => "$vr21",
            Self::vr22 => "$vr22",
            Self::vr23 => "$vr23",
            Self::vr24 => "$vr24",
            Self::vr25 => "$vr25",
            Self::vr26 => "$vr26",
            Self::vr27 => "$vr27",
            Self::vr28 => "$vr28",
            Self::vr29 => "$vr29",
            Self::vr30 => "$vr30",
            Self::vr31 => "$vr31",
            Self::xr0 => "$xr0",
            Self::xr1 => "$xr1",
            Self::xr2 => "$xr2",
            Self::xr3 => "$xr3",
            Self::xr4 => "$xr4",
            Self::xr5 => "$xr5",
            Self::xr6 => "$xr6",
            Self::xr7 => "$xr7",
            Self::xr8 => "$xr8",
            Self::xr9 => "$xr9",
            Self::xr10 => "$xr10",
            Self::xr11 => "$xr11",
            Self::xr12 => "$xr12",
            Self::xr13 => "$xr13",
            Self::xr14 => "$xr14",
            Self::xr15 => "$xr15",
            Self::xr16 => "$xr16",
            Self::xr17 => "$xr17",
            Self::xr18 => "$xr18",
            Self::xr19 => "$xr19",
            Self::xr20 => "$xr20",
            Self::xr21 => "$xr21",
            Self::xr22 => "$xr22",
            Self::xr23 => "$xr23",
            Self::xr24 => "$xr24",
            Self::xr25 => "$xr25",
            Self::xr26 => "$xr26",
            Self::xr27 => "$xr27",
            Self::xr28 => "$xr28",
            Self::xr29 => "$xr29",
            Self::xr30 => "$xr30",
            Self::xr31 => "$xr31",
        }
    }
    pub fn reg_class(self) -> LoongArchInlineAsmRegClass {
        match self {
            Self::r1 => LoongArchInlineAsmRegClass::reg,
            Self::r4 => LoongArchInlineAsmRegClass::reg,
            Self::r5 => LoongArchInlineAsmRegClass::reg,
            Self::r6 => LoongArchInlineAsmRegClass::reg,
            Self::r7 => LoongArchInlineAsmRegClass::reg,
            Self::r8 => LoongArchInlineAsmRegClass::reg,
            Self::r9 => LoongArchInlineAsmRegClass::reg,
            Self::r10 => LoongArchInlineAsmRegClass::reg,
            Self::r11 => LoongArchInlineAsmRegClass::reg,
            Self::r12 => LoongArchInlineAsmRegClass::reg,
            Self::r13 => LoongArchInlineAsmRegClass::reg,
            Self::r14 => LoongArchInlineAsmRegClass::reg,
            Self::r15 => LoongArchInlineAsmRegClass::reg,
            Self::r16 => LoongArchInlineAsmRegClass::reg,
            Self::r17 => LoongArchInlineAsmRegClass::reg,
            Self::r18 => LoongArchInlineAsmRegClass::reg,
            Self::r19 => LoongArchInlineAsmRegClass::reg,
            Self::r20 => LoongArchInlineAsmRegClass::reg,
            Self::r23 => LoongArchInlineAsmRegClass::reg,
            Self::r24 => LoongArchInlineAsmRegClass::reg,
            Self::r25 => LoongArchInlineAsmRegClass::reg,
            Self::r26 => LoongArchInlineAsmRegClass::reg,
            Self::r27 => LoongArchInlineAsmRegClass::reg,
            Self::r28 => LoongArchInlineAsmRegClass::reg,
            Self::r29 => LoongArchInlineAsmRegClass::reg,
            Self::r30 => LoongArchInlineAsmRegClass::reg,
            Self::f0 => LoongArchInlineAsmRegClass::freg,
            Self::f1 => LoongArchInlineAsmRegClass::freg,
            Self::f2 => LoongArchInlineAsmRegClass::freg,
            Self::f3 => LoongArchInlineAsmRegClass::freg,
            Self::f4 => LoongArchInlineAsmRegClass::freg,
            Self::f5 => LoongArchInlineAsmRegClass::freg,
            Self::f6 => LoongArchInlineAsmRegClass::freg,
            Self::f7 => LoongArchInlineAsmRegClass::freg,
            Self::f8 => LoongArchInlineAsmRegClass::freg,
            Self::f9 => LoongArchInlineAsmRegClass::freg,
            Self::f10 => LoongArchInlineAsmRegClass::freg,
            Self::f11 => LoongArchInlineAsmRegClass::freg,
            Self::f12 => LoongArchInlineAsmRegClass::freg,
            Self::f13 => LoongArchInlineAsmRegClass::freg,
            Self::f14 => LoongArchInlineAsmRegClass::freg,
            Self::f15 => LoongArchInlineAsmRegClass::freg,
            Self::f16 => LoongArchInlineAsmRegClass::freg,
            Self::f17 => LoongArchInlineAsmRegClass::freg,
            Self::f18 => LoongArchInlineAsmRegClass::freg,
            Self::f19 => LoongArchInlineAsmRegClass::freg,
            Self::f20 => LoongArchInlineAsmRegClass::freg,
            Self::f21 => LoongArchInlineAsmRegClass::freg,
            Self::f22 => LoongArchInlineAsmRegClass::freg,
            Self::f23 => LoongArchInlineAsmRegClass::freg,
            Self::f24 => LoongArchInlineAsmRegClass::freg,
            Self::f25 => LoongArchInlineAsmRegClass::freg,
            Self::f26 => LoongArchInlineAsmRegClass::freg,
            Self::f27 => LoongArchInlineAsmRegClass::freg,
            Self::f28 => LoongArchInlineAsmRegClass::freg,
            Self::f29 => LoongArchInlineAsmRegClass::freg,
            Self::f30 => LoongArchInlineAsmRegClass::freg,
            Self::f31 => LoongArchInlineAsmRegClass::freg,
            Self::vr0 => LoongArchInlineAsmRegClass::vreg,
            Self::vr1 => LoongArchInlineAsmRegClass::vreg,
            Self::vr2 => LoongArchInlineAsmRegClass::vreg,
            Self::vr3 => LoongArchInlineAsmRegClass::vreg,
            Self::vr4 => LoongArchInlineAsmRegClass::vreg,
            Self::vr5 => LoongArchInlineAsmRegClass::vreg,
            Self::vr6 => LoongArchInlineAsmRegClass::vreg,
            Self::vr7 => LoongArchInlineAsmRegClass::vreg,
            Self::vr8 => LoongArchInlineAsmRegClass::vreg,
            Self::vr9 => LoongArchInlineAsmRegClass::vreg,
            Self::vr10 => LoongArchInlineAsmRegClass::vreg,
            Self::vr11 => LoongArchInlineAsmRegClass::vreg,
            Self::vr12 => LoongArchInlineAsmRegClass::vreg,
            Self::vr13 => LoongArchInlineAsmRegClass::vreg,
            Self::vr14 => LoongArchInlineAsmRegClass::vreg,
            Self::vr15 => LoongArchInlineAsmRegClass::vreg,
            Self::vr16 => LoongArchInlineAsmRegClass::vreg,
            Self::vr17 => LoongArchInlineAsmRegClass::vreg,
            Self::vr18 => LoongArchInlineAsmRegClass::vreg,
            Self::vr19 => LoongArchInlineAsmRegClass::vreg,
            Self::vr20 => LoongArchInlineAsmRegClass::vreg,
            Self::vr21 => LoongArchInlineAsmRegClass::vreg,
            Self::vr22 => LoongArchInlineAsmRegClass::vreg,
            Self::vr23 => LoongArchInlineAsmRegClass::vreg,
            Self::vr24 => LoongArchInlineAsmRegClass::vreg,
            Self::vr25 => LoongArchInlineAsmRegClass::vreg,
            Self::vr26 => LoongArchInlineAsmRegClass::vreg,
            Self::vr27 => LoongArchInlineAsmRegClass::vreg,
            Self::vr28 => LoongArchInlineAsmRegClass::vreg,
            Self::vr29 => LoongArchInlineAsmRegClass::vreg,
            Self::vr30 => LoongArchInlineAsmRegClass::vreg,
            Self::vr31 => LoongArchInlineAsmRegClass::vreg,
            Self::xr0 => LoongArchInlineAsmRegClass::xreg,
            Self::xr1 => LoongArchInlineAsmRegClass::xreg,
            Self::xr2 => LoongArchInlineAsmRegClass::xreg,
            Self::xr3 => LoongArchInlineAsmRegClass::xreg,
            Self::xr4 => LoongArchInlineAsmRegClass::xreg,
            Self::xr5 => LoongArchInlineAsmRegClass::xreg,
            Self::xr6 => LoongArchInlineAsmRegClass::xreg,
            Self::xr7 => LoongArchInlineAsmRegClass::xreg,
            Self::xr8 => LoongArchInlineAsmRegClass::xreg,
            Self::xr9 => LoongArchInlineAsmRegClass::xreg,
            Self::xr10 => LoongArchInlineAsmRegClass::xreg,
            Self::xr11 => LoongArchInlineAsmRegClass::xreg,
            Self::xr12 => LoongArchInlineAsmRegClass::xreg,
            Self::xr13 => LoongArchInlineAsmRegClass::xreg,
            Self::xr14 => LoongArchInlineAsmRegClass::xreg,
            Self::xr15 => LoongArchInlineAsmRegClass::xreg,
            Self::xr16 => LoongArchInlineAsmRegClass::xreg,
            Self::xr17 => LoongArchInlineAsmRegClass::xreg,
            Self::xr18 => LoongArchInlineAsmRegClass::xreg,
            Self::xr19 => LoongArchInlineAsmRegClass::xreg,
            Self::xr20 => LoongArchInlineAsmRegClass::xreg,
            Self::xr21 => LoongArchInlineAsmRegClass::xreg,
            Self::xr22 => LoongArchInlineAsmRegClass::xreg,
            Self::xr23 => LoongArchInlineAsmRegClass::xreg,
            Self::xr24 => LoongArchInlineAsmRegClass::xreg,
            Self::xr25 => LoongArchInlineAsmRegClass::xreg,
            Self::xr26 => LoongArchInlineAsmRegClass::xreg,
            Self::xr27 => LoongArchInlineAsmRegClass::xreg,
            Self::xr28 => LoongArchInlineAsmRegClass::xreg,
            Self::xr29 => LoongArchInlineAsmRegClass::xreg,
            Self::xr30 => LoongArchInlineAsmRegClass::xreg,
            Self::xr31 => LoongArchInlineAsmRegClass::xreg,
        }
    }
    pub fn parse(name: &str) -> Result<Self, &'static str> {
        match name {
            "$ra" | "$r1" => Ok(Self::r1),
            "$a0" | "$r4" => Ok(Self::r4),
            "$a1" | "$r5" => Ok(Self::r5),
            "$a2" | "$r6" => Ok(Self::r6),
            "$a3" | "$r7" => Ok(Self::r7),
            "$a4" | "$r8" => Ok(Self::r8),
            "$a5" | "$r9" => Ok(Self::r9),
            "$a6" | "$r10" => Ok(Self::r10),
            "$a7" | "$r11" => Ok(Self::r11),
            "$t0" | "$r12" => Ok(Self::r12),
            "$t1" | "$r13" => Ok(Self::r13),
            "$t2" | "$r14" => Ok(Self::r14),
            "$t3" | "$r15" => Ok(Self::r15),
            "$t4" | "$r16" => Ok(Self::r16),
            "$t5" | "$r17" => Ok(Self::r17),
            "$t6" | "$r18" => Ok(Self::r18),
            "$t7" | "$r19" => Ok(Self::r19),
            "$t8" | "$r20" => Ok(Self::r20),
            "$s0" | "$r23" => Ok(Self::r23),
            "$s1" | "$r24" => Ok(Self::r24),
            "$s2" | "$r25" => Ok(Self::r25),
            "$s3" | "$r26" => Ok(Self::r26),
            "$s4" | "$r27" => Ok(Self::r27),
            "$s5" | "$r28" => Ok(Self::r28),
            "$s6" | "$r29" => Ok(Self::r29),
            "$s7" | "$r30" => Ok(Self::r30),
            "$fa0" | "$f0" => Ok(Self::f0),
            "$fa1" | "$f1" => Ok(Self::f1),
            "$fa2" | "$f2" => Ok(Self::f2),
            "$fa3" | "$f3" => Ok(Self::f3),
            "$fa4" | "$f4" => Ok(Self::f4),
            "$fa5" | "$f5" => Ok(Self::f5),
            "$fa6" | "$f6" => Ok(Self::f6),
            "$fa7" | "$f7" => Ok(Self::f7),
            "$ft0" | "$f8" => Ok(Self::f8),
            "$ft1" | "$f9" => Ok(Self::f9),
            "$ft2" | "$f10" => Ok(Self::f10),
            "$ft3" | "$f11" => Ok(Self::f11),
            "$ft4" | "$f12" => Ok(Self::f12),
            "$ft5" | "$f13" => Ok(Self::f13),
            "$ft6" | "$f14" => Ok(Self::f14),
            "$ft7" | "$f15" => Ok(Self::f15),
            "$ft8" | "$f16" => Ok(Self::f16),
            "$ft9" | "$f17" => Ok(Self::f17),
            "$ft10" | "$f18" => Ok(Self::f18),
            "$ft11" | "$f19" => Ok(Self::f19),
            "$ft12" | "$f20" => Ok(Self::f20),
            "$ft13" | "$f21" => Ok(Self::f21),
            "$ft14" | "$f22" => Ok(Self::f22),
            "$ft15" | "$f23" => Ok(Self::f23),
            "$fs0" | "$f24" => Ok(Self::f24),
            "$fs1" | "$f25" => Ok(Self::f25),
            "$fs2" | "$f26" => Ok(Self::f26),
            "$fs3" | "$f27" => Ok(Self::f27),
            "$fs4" | "$f28" => Ok(Self::f28),
            "$fs5" | "$f29" => Ok(Self::f29),
            "$fs6" | "$f30" => Ok(Self::f30),
            "$fs7" | "$f31" => Ok(Self::f31),
            "$vr0" => Ok(Self::vr0),
            "$vr1" => Ok(Self::vr1),
            "$vr2" => Ok(Self::vr2),
            "$vr3" => Ok(Self::vr3),
            "$vr4" => Ok(Self::vr4),
            "$vr5" => Ok(Self::vr5),
            "$vr6" => Ok(Self::vr6),
            "$vr7" => Ok(Self::vr7),
            "$vr8" => Ok(Self::vr8),
            "$vr9" => Ok(Self::vr9),
            "$vr10" => Ok(Self::vr10),
            "$vr11" => Ok(Self::vr11),
            "$vr12" => Ok(Self::vr12),
            "$vr13" => Ok(Self::vr13),
            "$vr14" => Ok(Self::vr14),
            "$vr15" => Ok(Self::vr15),
            "$vr16" => Ok(Self::vr16),
            "$vr17" => Ok(Self::vr17),
            "$vr18" => Ok(Self::vr18),
            "$vr19" => Ok(Self::vr19),
            "$vr20" => Ok(Self::vr20),
            "$vr21" => Ok(Self::vr21),
            "$vr22" => Ok(Self::vr22),
            "$vr23" => Ok(Self::vr23),
            "$vr24" => Ok(Self::vr24),
            "$vr25" => Ok(Self::vr25),
            "$vr26" => Ok(Self::vr26),
            "$vr27" => Ok(Self::vr27),
            "$vr28" => Ok(Self::vr28),
            "$vr29" => Ok(Self::vr29),
            "$vr30" => Ok(Self::vr30),
            "$vr31" => Ok(Self::vr31),
            "$xr0" => Ok(Self::xr0),
            "$xr1" => Ok(Self::xr1),
            "$xr2" => Ok(Self::xr2),
            "$xr3" => Ok(Self::xr3),
            "$xr4" => Ok(Self::xr4),
            "$xr5" => Ok(Self::xr5),
            "$xr6" => Ok(Self::xr6),
            "$xr7" => Ok(Self::xr7),
            "$xr8" => Ok(Self::xr8),
            "$xr9" => Ok(Self::xr9),
            "$xr10" => Ok(Self::xr10),
            "$xr11" => Ok(Self::xr11),
            "$xr12" => Ok(Self::xr12),
            "$xr13" => Ok(Self::xr13),
            "$xr14" => Ok(Self::xr14),
            "$xr15" => Ok(Self::xr15),
            "$xr16" => Ok(Self::xr16),
            "$xr17" => Ok(Self::xr17),
            "$xr18" => Ok(Self::xr18),
            "$xr19" => Ok(Self::xr19),
            "$xr20" => Ok(Self::xr20),
            "$xr21" => Ok(Self::xr21),
            "$xr22" => Ok(Self::xr22),
            "$xr23" => Ok(Self::xr23),
            "$xr24" => Ok(Self::xr24),
            "$xr25" => Ok(Self::xr25),
            "$xr26" => Ok(Self::xr26),
            "$xr27" => Ok(Self::xr27),
            "$xr28" => Ok(Self::xr28),
            "$xr29" => Ok(Self::xr29),
            "$xr30" => Ok(Self::xr30),
            "$xr31" => Ok(Self::xr31),
            "$r0" | "$zero" =>
                Err("constant zero cannot be used as an operand for inline asm"),
            "$r2" | "$tp" => Err("reserved for TLS"),
            "$r3" | "$sp" =>
                Err("the stack pointer cannot be used as an operand for inline asm"),
            "$r21" => Err("reserved by the ABI"),
            "$r22" | "$fp" =>
                Err("the frame pointer cannot be used as an operand for inline asm"),
            "$r31" | "$s8" =>
                Err("$r31 is used internally by LLVM and cannot be used as an operand for inline asm"),
            _ => Err("unknown register"),
        }
    }
    pub fn validate(self, _arch: super::InlineAsmArch,
        _reloc_model: crate::spec::RelocModel,
        _target_features: &rustc_data_structures::fx::FxIndexSet<Symbol>,
        _target: &crate::spec::Target, _is_clobber: bool)
        -> Result<(), &'static str> {
        match self {
            Self::r1 => { Ok(()) }
            Self::r4 => { Ok(()) }
            Self::r5 => { Ok(()) }
            Self::r6 => { Ok(()) }
            Self::r7 => { Ok(()) }
            Self::r8 => { Ok(()) }
            Self::r9 => { Ok(()) }
            Self::r10 => { Ok(()) }
            Self::r11 => { Ok(()) }
            Self::r12 => { Ok(()) }
            Self::r13 => { Ok(()) }
            Self::r14 => { Ok(()) }
            Self::r15 => { Ok(()) }
            Self::r16 => { Ok(()) }
            Self::r17 => { Ok(()) }
            Self::r18 => { Ok(()) }
            Self::r19 => { Ok(()) }
            Self::r20 => { Ok(()) }
            Self::r23 => { Ok(()) }
            Self::r24 => { Ok(()) }
            Self::r25 => { Ok(()) }
            Self::r26 => { Ok(()) }
            Self::r27 => { Ok(()) }
            Self::r28 => { Ok(()) }
            Self::r29 => { Ok(()) }
            Self::r30 => { Ok(()) }
            Self::f0 => { Ok(()) }
            Self::f1 => { Ok(()) }
            Self::f2 => { Ok(()) }
            Self::f3 => { Ok(()) }
            Self::f4 => { Ok(()) }
            Self::f5 => { Ok(()) }
            Self::f6 => { Ok(()) }
            Self::f7 => { Ok(()) }
            Self::f8 => { Ok(()) }
            Self::f9 => { Ok(()) }
            Self::f10 => { Ok(()) }
            Self::f11 => { Ok(()) }
            Self::f12 => { Ok(()) }
            Self::f13 => { Ok(()) }
            Self::f14 => { Ok(()) }
            Self::f15 => { Ok(()) }
            Self::f16 => { Ok(()) }
            Self::f17 => { Ok(()) }
            Self::f18 => { Ok(()) }
            Self::f19 => { Ok(()) }
            Self::f20 => { Ok(()) }
            Self::f21 => { Ok(()) }
            Self::f22 => { Ok(()) }
            Self::f23 => { Ok(()) }
            Self::f24 => { Ok(()) }
            Self::f25 => { Ok(()) }
            Self::f26 => { Ok(()) }
            Self::f27 => { Ok(()) }
            Self::f28 => { Ok(()) }
            Self::f29 => { Ok(()) }
            Self::f30 => { Ok(()) }
            Self::f31 => { Ok(()) }
            Self::vr0 => { Ok(()) }
            Self::vr1 => { Ok(()) }
            Self::vr2 => { Ok(()) }
            Self::vr3 => { Ok(()) }
            Self::vr4 => { Ok(()) }
            Self::vr5 => { Ok(()) }
            Self::vr6 => { Ok(()) }
            Self::vr7 => { Ok(()) }
            Self::vr8 => { Ok(()) }
            Self::vr9 => { Ok(()) }
            Self::vr10 => { Ok(()) }
            Self::vr11 => { Ok(()) }
            Self::vr12 => { Ok(()) }
            Self::vr13 => { Ok(()) }
            Self::vr14 => { Ok(()) }
            Self::vr15 => { Ok(()) }
            Self::vr16 => { Ok(()) }
            Self::vr17 => { Ok(()) }
            Self::vr18 => { Ok(()) }
            Self::vr19 => { Ok(()) }
            Self::vr20 => { Ok(()) }
            Self::vr21 => { Ok(()) }
            Self::vr22 => { Ok(()) }
            Self::vr23 => { Ok(()) }
            Self::vr24 => { Ok(()) }
            Self::vr25 => { Ok(()) }
            Self::vr26 => { Ok(()) }
            Self::vr27 => { Ok(()) }
            Self::vr28 => { Ok(()) }
            Self::vr29 => { Ok(()) }
            Self::vr30 => { Ok(()) }
            Self::vr31 => { Ok(()) }
            Self::xr0 => { Ok(()) }
            Self::xr1 => { Ok(()) }
            Self::xr2 => { Ok(()) }
            Self::xr3 => { Ok(()) }
            Self::xr4 => { Ok(()) }
            Self::xr5 => { Ok(()) }
            Self::xr6 => { Ok(()) }
            Self::xr7 => { Ok(()) }
            Self::xr8 => { Ok(()) }
            Self::xr9 => { Ok(()) }
            Self::xr10 => { Ok(()) }
            Self::xr11 => { Ok(()) }
            Self::xr12 => { Ok(()) }
            Self::xr13 => { Ok(()) }
            Self::xr14 => { Ok(()) }
            Self::xr15 => { Ok(()) }
            Self::xr16 => { Ok(()) }
            Self::xr17 => { Ok(()) }
            Self::xr18 => { Ok(()) }
            Self::xr19 => { Ok(()) }
            Self::xr20 => { Ok(()) }
            Self::xr21 => { Ok(()) }
            Self::xr22 => { Ok(()) }
            Self::xr23 => { Ok(()) }
            Self::xr24 => { Ok(()) }
            Self::xr25 => { Ok(()) }
            Self::xr26 => { Ok(()) }
            Self::xr27 => { Ok(()) }
            Self::xr28 => { Ok(()) }
            Self::xr29 => { Ok(()) }
            Self::xr30 => { Ok(()) }
            Self::xr31 => { Ok(()) }
        }
    }
}
pub(super) fn fill_reg_map(_arch: super::InlineAsmArch,
    _reloc_model: crate::spec::RelocModel,
    _target_features: &rustc_data_structures::fx::FxIndexSet<Symbol>,
    _target: &crate::spec::Target,
    _map:
        &mut rustc_data_structures::fx::FxHashMap<super::InlineAsmRegClass,
        rustc_data_structures::fx::FxIndexSet<super::InlineAsmReg>>) {
    #[allow(unused_imports)]
    use super::{InlineAsmReg, InlineAsmRegClass};
    if true {
        if let Some(set) =
                _map.get_mut(&InlineAsmRegClass::LoongArch(LoongArchInlineAsmRegClass::reg))
            {
            set.insert(InlineAsmReg::LoongArch(LoongArchInlineAsmReg::r1));
        }
    }
    if true {
        if let Some(set) =
                _map.get_mut(&InlineAsmRegClass::LoongArch(LoongArchInlineAsmRegClass::reg))
            {
            set.insert(InlineAsmReg::LoongArch(LoongArchInlineAsmReg::r4));
        }
    }
    if true {
        if let Some(set) =
                _map.get_mut(&InlineAsmRegClass::LoongArch(LoongArchInlineAsmRegClass::reg))
            {
            set.insert(InlineAsmReg::LoongArch(LoongArchInlineAsmReg::r5));
        }
    }
    if true {
        if let Some(set) =
                _map.get_mut(&InlineAsmRegClass::LoongArch(LoongArchInlineAsmRegClass::reg))
            {
            set.insert(InlineAsmReg::LoongArch(LoongArchInlineAsmReg::r6));
        }
    }
    if true {
        if let Some(set) =
                _map.get_mut(&InlineAsmRegClass::LoongArch(LoongArchInlineAsmRegClass::reg))
            {
            set.insert(InlineAsmReg::LoongArch(LoongArchInlineAsmReg::r7));
        }
    }
    if true {
        if let Some(set) =
                _map.get_mut(&InlineAsmRegClass::LoongArch(LoongArchInlineAsmRegClass::reg))
            {
            set.insert(InlineAsmReg::LoongArch(LoongArchInlineAsmReg::r8));
        }
    }
    if true {
        if let Some(set) =
                _map.get_mut(&InlineAsmRegClass::LoongArch(LoongArchInlineAsmRegClass::reg))
            {
            set.insert(InlineAsmReg::LoongArch(LoongArchInlineAsmReg::r9));
        }
    }
    if true {
        if let Some(set) =
                _map.get_mut(&InlineAsmRegClass::LoongArch(LoongArchInlineAsmRegClass::reg))
            {
            set.insert(InlineAsmReg::LoongArch(LoongArchInlineAsmReg::r10));
        }
    }
    if true {
        if let Some(set) =
                _map.get_mut(&InlineAsmRegClass::LoongArch(LoongArchInlineAsmRegClass::reg))
            {
            set.insert(InlineAsmReg::LoongArch(LoongArchInlineAsmReg::r11));
        }
    }
    if true {
        if let Some(set) =
                _map.get_mut(&InlineAsmRegClass::LoongArch(LoongArchInlineAsmRegClass::reg))
            {
            set.insert(InlineAsmReg::LoongArch(LoongArchInlineAsmReg::r12));
        }
    }
    if true {
        if let Some(set) =
                _map.get_mut(&InlineAsmRegClass::LoongArch(LoongArchInlineAsmRegClass::reg))
            {
            set.insert(InlineAsmReg::LoongArch(LoongArchInlineAsmReg::r13));
        }
    }
    if true {
        if let Some(set) =
                _map.get_mut(&InlineAsmRegClass::LoongArch(LoongArchInlineAsmRegClass::reg))
            {
            set.insert(InlineAsmReg::LoongArch(LoongArchInlineAsmReg::r14));
        }
    }
    if true {
        if let Some(set) =
                _map.get_mut(&InlineAsmRegClass::LoongArch(LoongArchInlineAsmRegClass::reg))
            {
            set.insert(InlineAsmReg::LoongArch(LoongArchInlineAsmReg::r15));
        }
    }
    if true {
        if let Some(set) =
                _map.get_mut(&InlineAsmRegClass::LoongArch(LoongArchInlineAsmRegClass::reg))
            {
            set.insert(InlineAsmReg::LoongArch(LoongArchInlineAsmReg::r16));
        }
    }
    if true {
        if let Some(set) =
                _map.get_mut(&InlineAsmRegClass::LoongArch(LoongArchInlineAsmRegClass::reg))
            {
            set.insert(InlineAsmReg::LoongArch(LoongArchInlineAsmReg::r17));
        }
    }
    if true {
        if let Some(set) =
                _map.get_mut(&InlineAsmRegClass::LoongArch(LoongArchInlineAsmRegClass::reg))
            {
            set.insert(InlineAsmReg::LoongArch(LoongArchInlineAsmReg::r18));
        }
    }
    if true {
        if let Some(set) =
                _map.get_mut(&InlineAsmRegClass::LoongArch(LoongArchInlineAsmRegClass::reg))
            {
            set.insert(InlineAsmReg::LoongArch(LoongArchInlineAsmReg::r19));
        }
    }
    if true {
        if let Some(set) =
                _map.get_mut(&InlineAsmRegClass::LoongArch(LoongArchInlineAsmRegClass::reg))
            {
            set.insert(InlineAsmReg::LoongArch(LoongArchInlineAsmReg::r20));
        }
    }
    if true {
        if let Some(set) =
                _map.get_mut(&InlineAsmRegClass::LoongArch(LoongArchInlineAsmRegClass::reg))
            {
            set.insert(InlineAsmReg::LoongArch(LoongArchInlineAsmReg::r23));
        }
    }
    if true {
        if let Some(set) =
                _map.get_mut(&InlineAsmRegClass::LoongArch(LoongArchInlineAsmRegClass::reg))
            {
            set.insert(InlineAsmReg::LoongArch(LoongArchInlineAsmReg::r24));
        }
    }
    if true {
        if let Some(set) =
                _map.get_mut(&InlineAsmRegClass::LoongArch(LoongArchInlineAsmRegClass::reg))
            {
            set.insert(InlineAsmReg::LoongArch(LoongArchInlineAsmReg::r25));
        }
    }
    if true {
        if let Some(set) =
                _map.get_mut(&InlineAsmRegClass::LoongArch(LoongArchInlineAsmRegClass::reg))
            {
            set.insert(InlineAsmReg::LoongArch(LoongArchInlineAsmReg::r26));
        }
    }
    if true {
        if let Some(set) =
                _map.get_mut(&InlineAsmRegClass::LoongArch(LoongArchInlineAsmRegClass::reg))
            {
            set.insert(InlineAsmReg::LoongArch(LoongArchInlineAsmReg::r27));
        }
    }
    if true {
        if let Some(set) =
                _map.get_mut(&InlineAsmRegClass::LoongArch(LoongArchInlineAsmRegClass::reg))
            {
            set.insert(InlineAsmReg::LoongArch(LoongArchInlineAsmReg::r28));
        }
    }
    if true {
        if let Some(set) =
                _map.get_mut(&InlineAsmRegClass::LoongArch(LoongArchInlineAsmRegClass::reg))
            {
            set.insert(InlineAsmReg::LoongArch(LoongArchInlineAsmReg::r29));
        }
    }
    if true {
        if let Some(set) =
                _map.get_mut(&InlineAsmRegClass::LoongArch(LoongArchInlineAsmRegClass::reg))
            {
            set.insert(InlineAsmReg::LoongArch(LoongArchInlineAsmReg::r30));
        }
    }
    if true {
        if let Some(set) =
                _map.get_mut(&InlineAsmRegClass::LoongArch(LoongArchInlineAsmRegClass::freg))
            {
            set.insert(InlineAsmReg::LoongArch(LoongArchInlineAsmReg::f0));
        }
    }
    if true {
        if let Some(set) =
                _map.get_mut(&InlineAsmRegClass::LoongArch(LoongArchInlineAsmRegClass::freg))
            {
            set.insert(InlineAsmReg::LoongArch(LoongArchInlineAsmReg::f1));
        }
    }
    if true {
        if let Some(set) =
                _map.get_mut(&InlineAsmRegClass::LoongArch(LoongArchInlineAsmRegClass::freg))
            {
            set.insert(InlineAsmReg::LoongArch(LoongArchInlineAsmReg::f2));
        }
    }
    if true {
        if let Some(set) =
                _map.get_mut(&InlineAsmRegClass::LoongArch(LoongArchInlineAsmRegClass::freg))
            {
            set.insert(InlineAsmReg::LoongArch(LoongArchInlineAsmReg::f3));
        }
    }
    if true {
        if let Some(set) =
                _map.get_mut(&InlineAsmRegClass::LoongArch(LoongArchInlineAsmRegClass::freg))
            {
            set.insert(InlineAsmReg::LoongArch(LoongArchInlineAsmReg::f4));
        }
    }
    if true {
        if let Some(set) =
                _map.get_mut(&InlineAsmRegClass::LoongArch(LoongArchInlineAsmRegClass::freg))
            {
            set.insert(InlineAsmReg::LoongArch(LoongArchInlineAsmReg::f5));
        }
    }
    if true {
        if let Some(set) =
                _map.get_mut(&InlineAsmRegClass::LoongArch(LoongArchInlineAsmRegClass::freg))
            {
            set.insert(InlineAsmReg::LoongArch(LoongArchInlineAsmReg::f6));
        }
    }
    if true {
        if let Some(set) =
                _map.get_mut(&InlineAsmRegClass::LoongArch(LoongArchInlineAsmRegClass::freg))
            {
            set.insert(InlineAsmReg::LoongArch(LoongArchInlineAsmReg::f7));
        }
    }
    if true {
        if let Some(set) =
                _map.get_mut(&InlineAsmRegClass::LoongArch(LoongArchInlineAsmRegClass::freg))
            {
            set.insert(InlineAsmReg::LoongArch(LoongArchInlineAsmReg::f8));
        }
    }
    if true {
        if let Some(set) =
                _map.get_mut(&InlineAsmRegClass::LoongArch(LoongArchInlineAsmRegClass::freg))
            {
            set.insert(InlineAsmReg::LoongArch(LoongArchInlineAsmReg::f9));
        }
    }
    if true {
        if let Some(set) =
                _map.get_mut(&InlineAsmRegClass::LoongArch(LoongArchInlineAsmRegClass::freg))
            {
            set.insert(InlineAsmReg::LoongArch(LoongArchInlineAsmReg::f10));
        }
    }
    if true {
        if let Some(set) =
                _map.get_mut(&InlineAsmRegClass::LoongArch(LoongArchInlineAsmRegClass::freg))
            {
            set.insert(InlineAsmReg::LoongArch(LoongArchInlineAsmReg::f11));
        }
    }
    if true {
        if let Some(set) =
                _map.get_mut(&InlineAsmRegClass::LoongArch(LoongArchInlineAsmRegClass::freg))
            {
            set.insert(InlineAsmReg::LoongArch(LoongArchInlineAsmReg::f12));
        }
    }
    if true {
        if let Some(set) =
                _map.get_mut(&InlineAsmRegClass::LoongArch(LoongArchInlineAsmRegClass::freg))
            {
            set.insert(InlineAsmReg::LoongArch(LoongArchInlineAsmReg::f13));
        }
    }
    if true {
        if let Some(set) =
                _map.get_mut(&InlineAsmRegClass::LoongArch(LoongArchInlineAsmRegClass::freg))
            {
            set.insert(InlineAsmReg::LoongArch(LoongArchInlineAsmReg::f14));
        }
    }
    if true {
        if let Some(set) =
                _map.get_mut(&InlineAsmRegClass::LoongArch(LoongArchInlineAsmRegClass::freg))
            {
            set.insert(InlineAsmReg::LoongArch(LoongArchInlineAsmReg::f15));
        }
    }
    if true {
        if let Some(set) =
                _map.get_mut(&InlineAsmRegClass::LoongArch(LoongArchInlineAsmRegClass::freg))
            {
            set.insert(InlineAsmReg::LoongArch(LoongArchInlineAsmReg::f16));
        }
    }
    if true {
        if let Some(set) =
                _map.get_mut(&InlineAsmRegClass::LoongArch(LoongArchInlineAsmRegClass::freg))
            {
            set.insert(InlineAsmReg::LoongArch(LoongArchInlineAsmReg::f17));
        }
    }
    if true {
        if let Some(set) =
                _map.get_mut(&InlineAsmRegClass::LoongArch(LoongArchInlineAsmRegClass::freg))
            {
            set.insert(InlineAsmReg::LoongArch(LoongArchInlineAsmReg::f18));
        }
    }
    if true {
        if let Some(set) =
                _map.get_mut(&InlineAsmRegClass::LoongArch(LoongArchInlineAsmRegClass::freg))
            {
            set.insert(InlineAsmReg::LoongArch(LoongArchInlineAsmReg::f19));
        }
    }
    if true {
        if let Some(set) =
                _map.get_mut(&InlineAsmRegClass::LoongArch(LoongArchInlineAsmRegClass::freg))
            {
            set.insert(InlineAsmReg::LoongArch(LoongArchInlineAsmReg::f20));
        }
    }
    if true {
        if let Some(set) =
                _map.get_mut(&InlineAsmRegClass::LoongArch(LoongArchInlineAsmRegClass::freg))
            {
            set.insert(InlineAsmReg::LoongArch(LoongArchInlineAsmReg::f21));
        }
    }
    if true {
        if let Some(set) =
                _map.get_mut(&InlineAsmRegClass::LoongArch(LoongArchInlineAsmRegClass::freg))
            {
            set.insert(InlineAsmReg::LoongArch(LoongArchInlineAsmReg::f22));
        }
    }
    if true {
        if let Some(set) =
                _map.get_mut(&InlineAsmRegClass::LoongArch(LoongArchInlineAsmRegClass::freg))
            {
            set.insert(InlineAsmReg::LoongArch(LoongArchInlineAsmReg::f23));
        }
    }
    if true {
        if let Some(set) =
                _map.get_mut(&InlineAsmRegClass::LoongArch(LoongArchInlineAsmRegClass::freg))
            {
            set.insert(InlineAsmReg::LoongArch(LoongArchInlineAsmReg::f24));
        }
    }
    if true {
        if let Some(set) =
                _map.get_mut(&InlineAsmRegClass::LoongArch(LoongArchInlineAsmRegClass::freg))
            {
            set.insert(InlineAsmReg::LoongArch(LoongArchInlineAsmReg::f25));
        }
    }
    if true {
        if let Some(set) =
                _map.get_mut(&InlineAsmRegClass::LoongArch(LoongArchInlineAsmRegClass::freg))
            {
            set.insert(InlineAsmReg::LoongArch(LoongArchInlineAsmReg::f26));
        }
    }
    if true {
        if let Some(set) =
                _map.get_mut(&InlineAsmRegClass::LoongArch(LoongArchInlineAsmRegClass::freg))
            {
            set.insert(InlineAsmReg::LoongArch(LoongArchInlineAsmReg::f27));
        }
    }
    if true {
        if let Some(set) =
                _map.get_mut(&InlineAsmRegClass::LoongArch(LoongArchInlineAsmRegClass::freg))
            {
            set.insert(InlineAsmReg::LoongArch(LoongArchInlineAsmReg::f28));
        }
    }
    if true {
        if let Some(set) =
                _map.get_mut(&InlineAsmRegClass::LoongArch(LoongArchInlineAsmRegClass::freg))
            {
            set.insert(InlineAsmReg::LoongArch(LoongArchInlineAsmReg::f29));
        }
    }
    if true {
        if let Some(set) =
                _map.get_mut(&InlineAsmRegClass::LoongArch(LoongArchInlineAsmRegClass::freg))
            {
            set.insert(InlineAsmReg::LoongArch(LoongArchInlineAsmReg::f30));
        }
    }
    if true {
        if let Some(set) =
                _map.get_mut(&InlineAsmRegClass::LoongArch(LoongArchInlineAsmRegClass::freg))
            {
            set.insert(InlineAsmReg::LoongArch(LoongArchInlineAsmReg::f31));
        }
    }
    if true {
        if let Some(set) =
                _map.get_mut(&InlineAsmRegClass::LoongArch(LoongArchInlineAsmRegClass::vreg))
            {
            set.insert(InlineAsmReg::LoongArch(LoongArchInlineAsmReg::vr0));
        }
    }
    if true {
        if let Some(set) =
                _map.get_mut(&InlineAsmRegClass::LoongArch(LoongArchInlineAsmRegClass::vreg))
            {
            set.insert(InlineAsmReg::LoongArch(LoongArchInlineAsmReg::vr1));
        }
    }
    if true {
        if let Some(set) =
                _map.get_mut(&InlineAsmRegClass::LoongArch(LoongArchInlineAsmRegClass::vreg))
            {
            set.insert(InlineAsmReg::LoongArch(LoongArchInlineAsmReg::vr2));
        }
    }
    if true {
        if let Some(set) =
                _map.get_mut(&InlineAsmRegClass::LoongArch(LoongArchInlineAsmRegClass::vreg))
            {
            set.insert(InlineAsmReg::LoongArch(LoongArchInlineAsmReg::vr3));
        }
    }
    if true {
        if let Some(set) =
                _map.get_mut(&InlineAsmRegClass::LoongArch(LoongArchInlineAsmRegClass::vreg))
            {
            set.insert(InlineAsmReg::LoongArch(LoongArchInlineAsmReg::vr4));
        }
    }
    if true {
        if let Some(set) =
                _map.get_mut(&InlineAsmRegClass::LoongArch(LoongArchInlineAsmRegClass::vreg))
            {
            set.insert(InlineAsmReg::LoongArch(LoongArchInlineAsmReg::vr5));
        }
    }
    if true {
        if let Some(set) =
                _map.get_mut(&InlineAsmRegClass::LoongArch(LoongArchInlineAsmRegClass::vreg))
            {
            set.insert(InlineAsmReg::LoongArch(LoongArchInlineAsmReg::vr6));
        }
    }
    if true {
        if let Some(set) =
                _map.get_mut(&InlineAsmRegClass::LoongArch(LoongArchInlineAsmRegClass::vreg))
            {
            set.insert(InlineAsmReg::LoongArch(LoongArchInlineAsmReg::vr7));
        }
    }
    if true {
        if let Some(set) =
                _map.get_mut(&InlineAsmRegClass::LoongArch(LoongArchInlineAsmRegClass::vreg))
            {
            set.insert(InlineAsmReg::LoongArch(LoongArchInlineAsmReg::vr8));
        }
    }
    if true {
        if let Some(set) =
                _map.get_mut(&InlineAsmRegClass::LoongArch(LoongArchInlineAsmRegClass::vreg))
            {
            set.insert(InlineAsmReg::LoongArch(LoongArchInlineAsmReg::vr9));
        }
    }
    if true {
        if let Some(set) =
                _map.get_mut(&InlineAsmRegClass::LoongArch(LoongArchInlineAsmRegClass::vreg))
            {
            set.insert(InlineAsmReg::LoongArch(LoongArchInlineAsmReg::vr10));
        }
    }
    if true {
        if let Some(set) =
                _map.get_mut(&InlineAsmRegClass::LoongArch(LoongArchInlineAsmRegClass::vreg))
            {
            set.insert(InlineAsmReg::LoongArch(LoongArchInlineAsmReg::vr11));
        }
    }
    if true {
        if let Some(set) =
                _map.get_mut(&InlineAsmRegClass::LoongArch(LoongArchInlineAsmRegClass::vreg))
            {
            set.insert(InlineAsmReg::LoongArch(LoongArchInlineAsmReg::vr12));
        }
    }
    if true {
        if let Some(set) =
                _map.get_mut(&InlineAsmRegClass::LoongArch(LoongArchInlineAsmRegClass::vreg))
            {
            set.insert(InlineAsmReg::LoongArch(LoongArchInlineAsmReg::vr13));
        }
    }
    if true {
        if let Some(set) =
                _map.get_mut(&InlineAsmRegClass::LoongArch(LoongArchInlineAsmRegClass::vreg))
            {
            set.insert(InlineAsmReg::LoongArch(LoongArchInlineAsmReg::vr14));
        }
    }
    if true {
        if let Some(set) =
                _map.get_mut(&InlineAsmRegClass::LoongArch(LoongArchInlineAsmRegClass::vreg))
            {
            set.insert(InlineAsmReg::LoongArch(LoongArchInlineAsmReg::vr15));
        }
    }
    if true {
        if let Some(set) =
                _map.get_mut(&InlineAsmRegClass::LoongArch(LoongArchInlineAsmRegClass::vreg))
            {
            set.insert(InlineAsmReg::LoongArch(LoongArchInlineAsmReg::vr16));
        }
    }
    if true {
        if let Some(set) =
                _map.get_mut(&InlineAsmRegClass::LoongArch(LoongArchInlineAsmRegClass::vreg))
            {
            set.insert(InlineAsmReg::LoongArch(LoongArchInlineAsmReg::vr17));
        }
    }
    if true {
        if let Some(set) =
                _map.get_mut(&InlineAsmRegClass::LoongArch(LoongArchInlineAsmRegClass::vreg))
            {
            set.insert(InlineAsmReg::LoongArch(LoongArchInlineAsmReg::vr18));
        }
    }
    if true {
        if let Some(set) =
                _map.get_mut(&InlineAsmRegClass::LoongArch(LoongArchInlineAsmRegClass::vreg))
            {
            set.insert(InlineAsmReg::LoongArch(LoongArchInlineAsmReg::vr19));
        }
    }
    if true {
        if let Some(set) =
                _map.get_mut(&InlineAsmRegClass::LoongArch(LoongArchInlineAsmRegClass::vreg))
            {
            set.insert(InlineAsmReg::LoongArch(LoongArchInlineAsmReg::vr20));
        }
    }
    if true {
        if let Some(set) =
                _map.get_mut(&InlineAsmRegClass::LoongArch(LoongArchInlineAsmRegClass::vreg))
            {
            set.insert(InlineAsmReg::LoongArch(LoongArchInlineAsmReg::vr21));
        }
    }
    if true {
        if let Some(set) =
                _map.get_mut(&InlineAsmRegClass::LoongArch(LoongArchInlineAsmRegClass::vreg))
            {
            set.insert(InlineAsmReg::LoongArch(LoongArchInlineAsmReg::vr22));
        }
    }
    if true {
        if let Some(set) =
                _map.get_mut(&InlineAsmRegClass::LoongArch(LoongArchInlineAsmRegClass::vreg))
            {
            set.insert(InlineAsmReg::LoongArch(LoongArchInlineAsmReg::vr23));
        }
    }
    if true {
        if let Some(set) =
                _map.get_mut(&InlineAsmRegClass::LoongArch(LoongArchInlineAsmRegClass::vreg))
            {
            set.insert(InlineAsmReg::LoongArch(LoongArchInlineAsmReg::vr24));
        }
    }
    if true {
        if let Some(set) =
                _map.get_mut(&InlineAsmRegClass::LoongArch(LoongArchInlineAsmRegClass::vreg))
            {
            set.insert(InlineAsmReg::LoongArch(LoongArchInlineAsmReg::vr25));
        }
    }
    if true {
        if let Some(set) =
                _map.get_mut(&InlineAsmRegClass::LoongArch(LoongArchInlineAsmRegClass::vreg))
            {
            set.insert(InlineAsmReg::LoongArch(LoongArchInlineAsmReg::vr26));
        }
    }
    if true {
        if let Some(set) =
                _map.get_mut(&InlineAsmRegClass::LoongArch(LoongArchInlineAsmRegClass::vreg))
            {
            set.insert(InlineAsmReg::LoongArch(LoongArchInlineAsmReg::vr27));
        }
    }
    if true {
        if let Some(set) =
                _map.get_mut(&InlineAsmRegClass::LoongArch(LoongArchInlineAsmRegClass::vreg))
            {
            set.insert(InlineAsmReg::LoongArch(LoongArchInlineAsmReg::vr28));
        }
    }
    if true {
        if let Some(set) =
                _map.get_mut(&InlineAsmRegClass::LoongArch(LoongArchInlineAsmRegClass::vreg))
            {
            set.insert(InlineAsmReg::LoongArch(LoongArchInlineAsmReg::vr29));
        }
    }
    if true {
        if let Some(set) =
                _map.get_mut(&InlineAsmRegClass::LoongArch(LoongArchInlineAsmRegClass::vreg))
            {
            set.insert(InlineAsmReg::LoongArch(LoongArchInlineAsmReg::vr30));
        }
    }
    if true {
        if let Some(set) =
                _map.get_mut(&InlineAsmRegClass::LoongArch(LoongArchInlineAsmRegClass::vreg))
            {
            set.insert(InlineAsmReg::LoongArch(LoongArchInlineAsmReg::vr31));
        }
    }
    if true {
        if let Some(set) =
                _map.get_mut(&InlineAsmRegClass::LoongArch(LoongArchInlineAsmRegClass::xreg))
            {
            set.insert(InlineAsmReg::LoongArch(LoongArchInlineAsmReg::xr0));
        }
    }
    if true {
        if let Some(set) =
                _map.get_mut(&InlineAsmRegClass::LoongArch(LoongArchInlineAsmRegClass::xreg))
            {
            set.insert(InlineAsmReg::LoongArch(LoongArchInlineAsmReg::xr1));
        }
    }
    if true {
        if let Some(set) =
                _map.get_mut(&InlineAsmRegClass::LoongArch(LoongArchInlineAsmRegClass::xreg))
            {
            set.insert(InlineAsmReg::LoongArch(LoongArchInlineAsmReg::xr2));
        }
    }
    if true {
        if let Some(set) =
                _map.get_mut(&InlineAsmRegClass::LoongArch(LoongArchInlineAsmRegClass::xreg))
            {
            set.insert(InlineAsmReg::LoongArch(LoongArchInlineAsmReg::xr3));
        }
    }
    if true {
        if let Some(set) =
                _map.get_mut(&InlineAsmRegClass::LoongArch(LoongArchInlineAsmRegClass::xreg))
            {
            set.insert(InlineAsmReg::LoongArch(LoongArchInlineAsmReg::xr4));
        }
    }
    if true {
        if let Some(set) =
                _map.get_mut(&InlineAsmRegClass::LoongArch(LoongArchInlineAsmRegClass::xreg))
            {
            set.insert(InlineAsmReg::LoongArch(LoongArchInlineAsmReg::xr5));
        }
    }
    if true {
        if let Some(set) =
                _map.get_mut(&InlineAsmRegClass::LoongArch(LoongArchInlineAsmRegClass::xreg))
            {
            set.insert(InlineAsmReg::LoongArch(LoongArchInlineAsmReg::xr6));
        }
    }
    if true {
        if let Some(set) =
                _map.get_mut(&InlineAsmRegClass::LoongArch(LoongArchInlineAsmRegClass::xreg))
            {
            set.insert(InlineAsmReg::LoongArch(LoongArchInlineAsmReg::xr7));
        }
    }
    if true {
        if let Some(set) =
                _map.get_mut(&InlineAsmRegClass::LoongArch(LoongArchInlineAsmRegClass::xreg))
            {
            set.insert(InlineAsmReg::LoongArch(LoongArchInlineAsmReg::xr8));
        }
    }
    if true {
        if let Some(set) =
                _map.get_mut(&InlineAsmRegClass::LoongArch(LoongArchInlineAsmRegClass::xreg))
            {
            set.insert(InlineAsmReg::LoongArch(LoongArchInlineAsmReg::xr9));
        }
    }
    if true {
        if let Some(set) =
                _map.get_mut(&InlineAsmRegClass::LoongArch(LoongArchInlineAsmRegClass::xreg))
            {
            set.insert(InlineAsmReg::LoongArch(LoongArchInlineAsmReg::xr10));
        }
    }
    if true {
        if let Some(set) =
                _map.get_mut(&InlineAsmRegClass::LoongArch(LoongArchInlineAsmRegClass::xreg))
            {
            set.insert(InlineAsmReg::LoongArch(LoongArchInlineAsmReg::xr11));
        }
    }
    if true {
        if let Some(set) =
                _map.get_mut(&InlineAsmRegClass::LoongArch(LoongArchInlineAsmRegClass::xreg))
            {
            set.insert(InlineAsmReg::LoongArch(LoongArchInlineAsmReg::xr12));
        }
    }
    if true {
        if let Some(set) =
                _map.get_mut(&InlineAsmRegClass::LoongArch(LoongArchInlineAsmRegClass::xreg))
            {
            set.insert(InlineAsmReg::LoongArch(LoongArchInlineAsmReg::xr13));
        }
    }
    if true {
        if let Some(set) =
                _map.get_mut(&InlineAsmRegClass::LoongArch(LoongArchInlineAsmRegClass::xreg))
            {
            set.insert(InlineAsmReg::LoongArch(LoongArchInlineAsmReg::xr14));
        }
    }
    if true {
        if let Some(set) =
                _map.get_mut(&InlineAsmRegClass::LoongArch(LoongArchInlineAsmRegClass::xreg))
            {
            set.insert(InlineAsmReg::LoongArch(LoongArchInlineAsmReg::xr15));
        }
    }
    if true {
        if let Some(set) =
                _map.get_mut(&InlineAsmRegClass::LoongArch(LoongArchInlineAsmRegClass::xreg))
            {
            set.insert(InlineAsmReg::LoongArch(LoongArchInlineAsmReg::xr16));
        }
    }
    if true {
        if let Some(set) =
                _map.get_mut(&InlineAsmRegClass::LoongArch(LoongArchInlineAsmRegClass::xreg))
            {
            set.insert(InlineAsmReg::LoongArch(LoongArchInlineAsmReg::xr17));
        }
    }
    if true {
        if let Some(set) =
                _map.get_mut(&InlineAsmRegClass::LoongArch(LoongArchInlineAsmRegClass::xreg))
            {
            set.insert(InlineAsmReg::LoongArch(LoongArchInlineAsmReg::xr18));
        }
    }
    if true {
        if let Some(set) =
                _map.get_mut(&InlineAsmRegClass::LoongArch(LoongArchInlineAsmRegClass::xreg))
            {
            set.insert(InlineAsmReg::LoongArch(LoongArchInlineAsmReg::xr19));
        }
    }
    if true {
        if let Some(set) =
                _map.get_mut(&InlineAsmRegClass::LoongArch(LoongArchInlineAsmRegClass::xreg))
            {
            set.insert(InlineAsmReg::LoongArch(LoongArchInlineAsmReg::xr20));
        }
    }
    if true {
        if let Some(set) =
                _map.get_mut(&InlineAsmRegClass::LoongArch(LoongArchInlineAsmRegClass::xreg))
            {
            set.insert(InlineAsmReg::LoongArch(LoongArchInlineAsmReg::xr21));
        }
    }
    if true {
        if let Some(set) =
                _map.get_mut(&InlineAsmRegClass::LoongArch(LoongArchInlineAsmRegClass::xreg))
            {
            set.insert(InlineAsmReg::LoongArch(LoongArchInlineAsmReg::xr22));
        }
    }
    if true {
        if let Some(set) =
                _map.get_mut(&InlineAsmRegClass::LoongArch(LoongArchInlineAsmRegClass::xreg))
            {
            set.insert(InlineAsmReg::LoongArch(LoongArchInlineAsmReg::xr23));
        }
    }
    if true {
        if let Some(set) =
                _map.get_mut(&InlineAsmRegClass::LoongArch(LoongArchInlineAsmRegClass::xreg))
            {
            set.insert(InlineAsmReg::LoongArch(LoongArchInlineAsmReg::xr24));
        }
    }
    if true {
        if let Some(set) =
                _map.get_mut(&InlineAsmRegClass::LoongArch(LoongArchInlineAsmRegClass::xreg))
            {
            set.insert(InlineAsmReg::LoongArch(LoongArchInlineAsmReg::xr25));
        }
    }
    if true {
        if let Some(set) =
                _map.get_mut(&InlineAsmRegClass::LoongArch(LoongArchInlineAsmRegClass::xreg))
            {
            set.insert(InlineAsmReg::LoongArch(LoongArchInlineAsmReg::xr26));
        }
    }
    if true {
        if let Some(set) =
                _map.get_mut(&InlineAsmRegClass::LoongArch(LoongArchInlineAsmRegClass::xreg))
            {
            set.insert(InlineAsmReg::LoongArch(LoongArchInlineAsmReg::xr27));
        }
    }
    if true {
        if let Some(set) =
                _map.get_mut(&InlineAsmRegClass::LoongArch(LoongArchInlineAsmRegClass::xreg))
            {
            set.insert(InlineAsmReg::LoongArch(LoongArchInlineAsmReg::xr28));
        }
    }
    if true {
        if let Some(set) =
                _map.get_mut(&InlineAsmRegClass::LoongArch(LoongArchInlineAsmRegClass::xreg))
            {
            set.insert(InlineAsmReg::LoongArch(LoongArchInlineAsmReg::xr29));
        }
    }
    if true {
        if let Some(set) =
                _map.get_mut(&InlineAsmRegClass::LoongArch(LoongArchInlineAsmRegClass::xreg))
            {
            set.insert(InlineAsmReg::LoongArch(LoongArchInlineAsmReg::xr30));
        }
    }
    if true {
        if let Some(set) =
                _map.get_mut(&InlineAsmRegClass::LoongArch(LoongArchInlineAsmRegClass::xreg))
            {
            set.insert(InlineAsmReg::LoongArch(LoongArchInlineAsmReg::xr31));
        }
    }
}def_regs! {
81    LoongArch LoongArchInlineAsmReg LoongArchInlineAsmRegClass {
82        r1: reg = ["$r1","$ra"],
83        r4: reg = ["$r4","$a0"],
84        r5: reg = ["$r5","$a1"],
85        r6: reg = ["$r6","$a2"],
86        r7: reg = ["$r7","$a3"],
87        r8: reg = ["$r8","$a4"],
88        r9: reg = ["$r9","$a5"],
89        r10: reg = ["$r10","$a6"],
90        r11: reg = ["$r11","$a7"],
91        r12: reg = ["$r12","$t0"],
92        r13: reg = ["$r13","$t1"],
93        r14: reg = ["$r14","$t2"],
94        r15: reg = ["$r15","$t3"],
95        r16: reg = ["$r16","$t4"],
96        r17: reg = ["$r17","$t5"],
97        r18: reg = ["$r18","$t6"],
98        r19: reg = ["$r19","$t7"],
99        r20: reg = ["$r20","$t8"],
100        r23: reg = ["$r23","$s0"],
101        r24: reg = ["$r24","$s1"],
102        r25: reg = ["$r25","$s2"],
103        r26: reg = ["$r26","$s3"],
104        r27: reg = ["$r27","$s4"],
105        r28: reg = ["$r28","$s5"],
106        r29: reg = ["$r29","$s6"],
107        r30: reg = ["$r30","$s7"],
108        f0: freg = ["$f0","$fa0"],
109        f1: freg = ["$f1","$fa1"],
110        f2: freg = ["$f2","$fa2"],
111        f3: freg = ["$f3","$fa3"],
112        f4: freg = ["$f4","$fa4"],
113        f5: freg = ["$f5","$fa5"],
114        f6: freg = ["$f6","$fa6"],
115        f7: freg = ["$f7","$fa7"],
116        f8: freg = ["$f8","$ft0"],
117        f9: freg = ["$f9","$ft1"],
118        f10: freg = ["$f10","$ft2"],
119        f11: freg = ["$f11","$ft3"],
120        f12: freg = ["$f12","$ft4"],
121        f13: freg = ["$f13","$ft5"],
122        f14: freg = ["$f14","$ft6"],
123        f15: freg = ["$f15","$ft7"],
124        f16: freg = ["$f16","$ft8"],
125        f17: freg = ["$f17","$ft9"],
126        f18: freg = ["$f18","$ft10"],
127        f19: freg = ["$f19","$ft11"],
128        f20: freg = ["$f20","$ft12"],
129        f21: freg = ["$f21","$ft13"],
130        f22: freg = ["$f22","$ft14"],
131        f23: freg = ["$f23","$ft15"],
132        f24: freg = ["$f24","$fs0"],
133        f25: freg = ["$f25","$fs1"],
134        f26: freg = ["$f26","$fs2"],
135        f27: freg = ["$f27","$fs3"],
136        f28: freg = ["$f28","$fs4"],
137        f29: freg = ["$f29","$fs5"],
138        f30: freg = ["$f30","$fs6"],
139        f31: freg = ["$f31","$fs7"],
140        vr0: vreg = ["$vr0"],
141        vr1: vreg = ["$vr1"],
142        vr2: vreg = ["$vr2"],
143        vr3: vreg = ["$vr3"],
144        vr4: vreg = ["$vr4"],
145        vr5: vreg = ["$vr5"],
146        vr6: vreg = ["$vr6"],
147        vr7: vreg = ["$vr7"],
148        vr8: vreg = ["$vr8"],
149        vr9: vreg = ["$vr9"],
150        vr10: vreg = ["$vr10"],
151        vr11: vreg = ["$vr11"],
152        vr12: vreg = ["$vr12"],
153        vr13: vreg = ["$vr13"],
154        vr14: vreg = ["$vr14"],
155        vr15: vreg = ["$vr15"],
156        vr16: vreg = ["$vr16"],
157        vr17: vreg = ["$vr17"],
158        vr18: vreg = ["$vr18"],
159        vr19: vreg = ["$vr19"],
160        vr20: vreg = ["$vr20"],
161        vr21: vreg = ["$vr21"],
162        vr22: vreg = ["$vr22"],
163        vr23: vreg = ["$vr23"],
164        vr24: vreg = ["$vr24"],
165        vr25: vreg = ["$vr25"],
166        vr26: vreg = ["$vr26"],
167        vr27: vreg = ["$vr27"],
168        vr28: vreg = ["$vr28"],
169        vr29: vreg = ["$vr29"],
170        vr30: vreg = ["$vr30"],
171        vr31: vreg = ["$vr31"],
172        xr0: xreg = ["$xr0"],
173        xr1: xreg = ["$xr1"],
174        xr2: xreg = ["$xr2"],
175        xr3: xreg = ["$xr3"],
176        xr4: xreg = ["$xr4"],
177        xr5: xreg = ["$xr5"],
178        xr6: xreg = ["$xr6"],
179        xr7: xreg = ["$xr7"],
180        xr8: xreg = ["$xr8"],
181        xr9: xreg = ["$xr9"],
182        xr10: xreg = ["$xr10"],
183        xr11: xreg = ["$xr11"],
184        xr12: xreg = ["$xr12"],
185        xr13: xreg = ["$xr13"],
186        xr14: xreg = ["$xr14"],
187        xr15: xreg = ["$xr15"],
188        xr16: xreg = ["$xr16"],
189        xr17: xreg = ["$xr17"],
190        xr18: xreg = ["$xr18"],
191        xr19: xreg = ["$xr19"],
192        xr20: xreg = ["$xr20"],
193        xr21: xreg = ["$xr21"],
194        xr22: xreg = ["$xr22"],
195        xr23: xreg = ["$xr23"],
196        xr24: xreg = ["$xr24"],
197        xr25: xreg = ["$xr25"],
198        xr26: xreg = ["$xr26"],
199        xr27: xreg = ["$xr27"],
200        xr28: xreg = ["$xr28"],
201        xr29: xreg = ["$xr29"],
202        xr30: xreg = ["$xr30"],
203        xr31: xreg = ["$xr31"],
204        #error = ["$r0","$zero"] =>
205            "constant zero cannot be used as an operand for inline asm",
206        #error = ["$r2","$tp"] =>
207            "reserved for TLS",
208        #error = ["$r3","$sp"] =>
209            "the stack pointer cannot be used as an operand for inline asm",
210        #error = ["$r21"] =>
211            "reserved by the ABI",
212        #error = ["$r22","$fp"] =>
213            "the frame pointer cannot be used as an operand for inline asm",
214        #error = ["$r31","$s8"] =>
215            "$r31 is used internally by LLVM and cannot be used as an operand for inline asm",
216    }
217}
218
219impl LoongArchInlineAsmReg {
220    pub fn emit(
221        self,
222        out: &mut dyn fmt::Write,
223        _arch: InlineAsmArch,
224        _modifier: Option<char>,
225    ) -> fmt::Result {
226        out.write_str(self.name())
227    }
228
229    pub fn overlapping_regs(self, mut cb: impl FnMut(LoongArchInlineAsmReg)) {
230        macro_rules! reg_conflicts {
231            (
232                $(
233                    $f:ident : $v:ident : $x:ident
234                ),*;
235            ) => {
236                match self {
237                    $(
238                        Self::$f | Self::$v | Self::$x => {
239                            cb(Self::$f);
240                            cb(Self::$v);
241                            cb(Self::$x);
242                        }
243                    )*
244                    r => cb(r),
245                }
246            };
247        }
248
249        match self {
    Self::f0 | Self::vr0 | Self::xr0 => {
        cb(Self::f0);
        cb(Self::vr0);
        cb(Self::xr0);
    }
    Self::f1 | Self::vr1 | Self::xr1 => {
        cb(Self::f1);
        cb(Self::vr1);
        cb(Self::xr1);
    }
    Self::f2 | Self::vr2 | Self::xr2 => {
        cb(Self::f2);
        cb(Self::vr2);
        cb(Self::xr2);
    }
    Self::f3 | Self::vr3 | Self::xr3 => {
        cb(Self::f3);
        cb(Self::vr3);
        cb(Self::xr3);
    }
    Self::f4 | Self::vr4 | Self::xr4 => {
        cb(Self::f4);
        cb(Self::vr4);
        cb(Self::xr4);
    }
    Self::f5 | Self::vr5 | Self::xr5 => {
        cb(Self::f5);
        cb(Self::vr5);
        cb(Self::xr5);
    }
    Self::f6 | Self::vr6 | Self::xr6 => {
        cb(Self::f6);
        cb(Self::vr6);
        cb(Self::xr6);
    }
    Self::f7 | Self::vr7 | Self::xr7 => {
        cb(Self::f7);
        cb(Self::vr7);
        cb(Self::xr7);
    }
    Self::f8 | Self::vr8 | Self::xr8 => {
        cb(Self::f8);
        cb(Self::vr8);
        cb(Self::xr8);
    }
    Self::f9 | Self::vr9 | Self::xr9 => {
        cb(Self::f9);
        cb(Self::vr9);
        cb(Self::xr9);
    }
    Self::f10 | Self::vr10 | Self::xr10 => {
        cb(Self::f10);
        cb(Self::vr10);
        cb(Self::xr10);
    }
    Self::f11 | Self::vr11 | Self::xr11 => {
        cb(Self::f11);
        cb(Self::vr11);
        cb(Self::xr11);
    }
    Self::f12 | Self::vr12 | Self::xr12 => {
        cb(Self::f12);
        cb(Self::vr12);
        cb(Self::xr12);
    }
    Self::f13 | Self::vr13 | Self::xr13 => {
        cb(Self::f13);
        cb(Self::vr13);
        cb(Self::xr13);
    }
    Self::f14 | Self::vr14 | Self::xr14 => {
        cb(Self::f14);
        cb(Self::vr14);
        cb(Self::xr14);
    }
    Self::f15 | Self::vr15 | Self::xr15 => {
        cb(Self::f15);
        cb(Self::vr15);
        cb(Self::xr15);
    }
    Self::f16 | Self::vr16 | Self::xr16 => {
        cb(Self::f16);
        cb(Self::vr16);
        cb(Self::xr16);
    }
    Self::f17 | Self::vr17 | Self::xr17 => {
        cb(Self::f17);
        cb(Self::vr17);
        cb(Self::xr17);
    }
    Self::f18 | Self::vr18 | Self::xr18 => {
        cb(Self::f18);
        cb(Self::vr18);
        cb(Self::xr18);
    }
    Self::f19 | Self::vr19 | Self::xr19 => {
        cb(Self::f19);
        cb(Self::vr19);
        cb(Self::xr19);
    }
    Self::f20 | Self::vr20 | Self::xr20 => {
        cb(Self::f20);
        cb(Self::vr20);
        cb(Self::xr20);
    }
    Self::f21 | Self::vr21 | Self::xr21 => {
        cb(Self::f21);
        cb(Self::vr21);
        cb(Self::xr21);
    }
    Self::f22 | Self::vr22 | Self::xr22 => {
        cb(Self::f22);
        cb(Self::vr22);
        cb(Self::xr22);
    }
    Self::f23 | Self::vr23 | Self::xr23 => {
        cb(Self::f23);
        cb(Self::vr23);
        cb(Self::xr23);
    }
    Self::f24 | Self::vr24 | Self::xr24 => {
        cb(Self::f24);
        cb(Self::vr24);
        cb(Self::xr24);
    }
    Self::f25 | Self::vr25 | Self::xr25 => {
        cb(Self::f25);
        cb(Self::vr25);
        cb(Self::xr25);
    }
    Self::f26 | Self::vr26 | Self::xr26 => {
        cb(Self::f26);
        cb(Self::vr26);
        cb(Self::xr26);
    }
    Self::f27 | Self::vr27 | Self::xr27 => {
        cb(Self::f27);
        cb(Self::vr27);
        cb(Self::xr27);
    }
    Self::f28 | Self::vr28 | Self::xr28 => {
        cb(Self::f28);
        cb(Self::vr28);
        cb(Self::xr28);
    }
    Self::f29 | Self::vr29 | Self::xr29 => {
        cb(Self::f29);
        cb(Self::vr29);
        cb(Self::xr29);
    }
    Self::f30 | Self::vr30 | Self::xr30 => {
        cb(Self::f30);
        cb(Self::vr30);
        cb(Self::xr30);
    }
    Self::f31 | Self::vr31 | Self::xr31 => {
        cb(Self::f31);
        cb(Self::vr31);
        cb(Self::xr31);
    }
    r => cb(r),
}reg_conflicts! {
250            f0 : vr0 : xr0,
251            f1 : vr1 : xr1,
252            f2 : vr2 : xr2,
253            f3 : vr3 : xr3,
254            f4 : vr4 : xr4,
255            f5 : vr5 : xr5,
256            f6 : vr6 : xr6,
257            f7 : vr7 : xr7,
258            f8 : vr8 : xr8,
259            f9 : vr9 : xr9,
260            f10 : vr10 : xr10,
261            f11 : vr11 : xr11,
262            f12 : vr12 : xr12,
263            f13 : vr13 : xr13,
264            f14 : vr14 : xr14,
265            f15 : vr15 : xr15,
266            f16 : vr16 : xr16,
267            f17 : vr17 : xr17,
268            f18 : vr18 : xr18,
269            f19 : vr19 : xr19,
270            f20 : vr20 : xr20,
271            f21 : vr21 : xr21,
272            f22 : vr22 : xr22,
273            f23 : vr23 : xr23,
274            f24 : vr24 : xr24,
275            f25 : vr25 : xr25,
276            f26 : vr26 : xr26,
277            f27 : vr27 : xr27,
278            f28 : vr28 : xr28,
279            f29 : vr29 : xr29,
280            f30 : vr30 : xr30,
281            f31 : vr31 : xr31;
282        }
283    }
284}