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) -> Self { *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);
            }
        }
    };
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 { }
#[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: &Self) -> bool {
        ::core::intrinsics::discriminant_value(self) ==
            ::core::intrinsics::discriminant_value(other)
    }
}
#[automatically_derived]#[allow(non_camel_case_types)]
impl ::core::cmp::PartialOrd for LoongArchInlineAsmRegClass {
    #[inline]
    fn partial_cmp(&self, other: &Self)
        -> ::core::option::Option<::core::cmp::Ordering> {
        ::core::cmp::PartialOrd::partial_cmp(&::core::intrinsics::discriminant_value(self),
            &::core::intrinsics::discriminant_value(other))
    }
}
#[automatically_derived]#[allow(non_camel_case_types)]
impl ::core::hash::Hash for LoongArchInlineAsmRegClass {
    #[inline]
    fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) {
        ::core::hash::Hash::hash(&::core::intrinsics::discriminant_value(self),
            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) {
                match *self {
                    LoongArchInlineAsmRegClass::reg =>
                        0u8.stable_hash(__hcx, __hasher),
                    LoongArchInlineAsmRegClass::freg =>
                        1u8.stable_hash(__hcx, __hasher),
                    LoongArchInlineAsmRegClass::vreg =>
                        2u8.stable_hash(__hcx, __hasher),
                    LoongArchInlineAsmRegClass::xreg =>
                        3u8.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::*;
    &[(I128, Some(rustc_span::sym::lsx)), (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: I128, 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::*;
    &[(I128, Some(rustc_span::sym::lasx)), (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: I128, 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) -> Self { *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);
            }
        }
    };
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::debug_c_like_enum_write_str(f,
            "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",
            match self {
                LoongArchInlineAsmReg::r1 => 0usize,
                LoongArchInlineAsmReg::r4 => 3usize,
                LoongArchInlineAsmReg::r5 => 6usize,
                LoongArchInlineAsmReg::r6 => 9usize,
                LoongArchInlineAsmReg::r7 => 12usize,
                LoongArchInlineAsmReg::r8 => 15usize,
                LoongArchInlineAsmReg::r9 => 18usize,
                LoongArchInlineAsmReg::r10 => 21usize,
                LoongArchInlineAsmReg::r11 => 25usize,
                LoongArchInlineAsmReg::r12 => 29usize,
                LoongArchInlineAsmReg::r13 => 33usize,
                LoongArchInlineAsmReg::r14 => 37usize,
                LoongArchInlineAsmReg::r15 => 41usize,
                LoongArchInlineAsmReg::r16 => 45usize,
                LoongArchInlineAsmReg::r17 => 49usize,
                LoongArchInlineAsmReg::r18 => 53usize,
                LoongArchInlineAsmReg::r19 => 57usize,
                LoongArchInlineAsmReg::r20 => 61usize,
                LoongArchInlineAsmReg::r23 => 65usize,
                LoongArchInlineAsmReg::r24 => 69usize,
                LoongArchInlineAsmReg::r25 => 73usize,
                LoongArchInlineAsmReg::r26 => 77usize,
                LoongArchInlineAsmReg::r27 => 81usize,
                LoongArchInlineAsmReg::r28 => 85usize,
                LoongArchInlineAsmReg::r29 => 89usize,
                LoongArchInlineAsmReg::r30 => 93usize,
                LoongArchInlineAsmReg::f0 => 97usize,
                LoongArchInlineAsmReg::f1 => 100usize,
                LoongArchInlineAsmReg::f2 => 103usize,
                LoongArchInlineAsmReg::f3 => 106usize,
                LoongArchInlineAsmReg::f4 => 109usize,
                LoongArchInlineAsmReg::f5 => 112usize,
                LoongArchInlineAsmReg::f6 => 115usize,
                LoongArchInlineAsmReg::f7 => 118usize,
                LoongArchInlineAsmReg::f8 => 121usize,
                LoongArchInlineAsmReg::f9 => 124usize,
                LoongArchInlineAsmReg::f10 => 127usize,
                LoongArchInlineAsmReg::f11 => 131usize,
                LoongArchInlineAsmReg::f12 => 135usize,
                LoongArchInlineAsmReg::f13 => 139usize,
                LoongArchInlineAsmReg::f14 => 143usize,
                LoongArchInlineAsmReg::f15 => 147usize,
                LoongArchInlineAsmReg::f16 => 151usize,
                LoongArchInlineAsmReg::f17 => 155usize,
                LoongArchInlineAsmReg::f18 => 159usize,
                LoongArchInlineAsmReg::f19 => 163usize,
                LoongArchInlineAsmReg::f20 => 167usize,
                LoongArchInlineAsmReg::f21 => 171usize,
                LoongArchInlineAsmReg::f22 => 175usize,
                LoongArchInlineAsmReg::f23 => 179usize,
                LoongArchInlineAsmReg::f24 => 183usize,
                LoongArchInlineAsmReg::f25 => 187usize,
                LoongArchInlineAsmReg::f26 => 191usize,
                LoongArchInlineAsmReg::f27 => 195usize,
                LoongArchInlineAsmReg::f28 => 199usize,
                LoongArchInlineAsmReg::f29 => 203usize,
                LoongArchInlineAsmReg::f30 => 207usize,
                LoongArchInlineAsmReg::f31 => 211usize,
                LoongArchInlineAsmReg::vr0 => 215usize,
                LoongArchInlineAsmReg::vr1 => 219usize,
                LoongArchInlineAsmReg::vr2 => 223usize,
                LoongArchInlineAsmReg::vr3 => 227usize,
                LoongArchInlineAsmReg::vr4 => 231usize,
                LoongArchInlineAsmReg::vr5 => 235usize,
                LoongArchInlineAsmReg::vr6 => 239usize,
                LoongArchInlineAsmReg::vr7 => 243usize,
                LoongArchInlineAsmReg::vr8 => 247usize,
                LoongArchInlineAsmReg::vr9 => 251usize,
                LoongArchInlineAsmReg::vr10 => 255usize,
                LoongArchInlineAsmReg::vr11 => 260usize,
                LoongArchInlineAsmReg::vr12 => 265usize,
                LoongArchInlineAsmReg::vr13 => 270usize,
                LoongArchInlineAsmReg::vr14 => 275usize,
                LoongArchInlineAsmReg::vr15 => 280usize,
                LoongArchInlineAsmReg::vr16 => 285usize,
                LoongArchInlineAsmReg::vr17 => 290usize,
                LoongArchInlineAsmReg::vr18 => 295usize,
                LoongArchInlineAsmReg::vr19 => 300usize,
                LoongArchInlineAsmReg::vr20 => 305usize,
                LoongArchInlineAsmReg::vr21 => 310usize,
                LoongArchInlineAsmReg::vr22 => 315usize,
                LoongArchInlineAsmReg::vr23 => 320usize,
                LoongArchInlineAsmReg::vr24 => 325usize,
                LoongArchInlineAsmReg::vr25 => 330usize,
                LoongArchInlineAsmReg::vr26 => 335usize,
                LoongArchInlineAsmReg::vr27 => 340usize,
                LoongArchInlineAsmReg::vr28 => 345usize,
                LoongArchInlineAsmReg::vr29 => 350usize,
                LoongArchInlineAsmReg::vr30 => 355usize,
                LoongArchInlineAsmReg::vr31 => 360usize,
                LoongArchInlineAsmReg::xr0 => 365usize,
                LoongArchInlineAsmReg::xr1 => 369usize,
                LoongArchInlineAsmReg::xr2 => 373usize,
                LoongArchInlineAsmReg::xr3 => 377usize,
                LoongArchInlineAsmReg::xr4 => 381usize,
                LoongArchInlineAsmReg::xr5 => 385usize,
                LoongArchInlineAsmReg::xr6 => 389usize,
                LoongArchInlineAsmReg::xr7 => 393usize,
                LoongArchInlineAsmReg::xr8 => 397usize,
                LoongArchInlineAsmReg::xr9 => 401usize,
                LoongArchInlineAsmReg::xr10 => 405usize,
                LoongArchInlineAsmReg::xr11 => 410usize,
                LoongArchInlineAsmReg::xr12 => 415usize,
                LoongArchInlineAsmReg::xr13 => 420usize,
                LoongArchInlineAsmReg::xr14 => 425usize,
                LoongArchInlineAsmReg::xr15 => 430usize,
                LoongArchInlineAsmReg::xr16 => 435usize,
                LoongArchInlineAsmReg::xr17 => 440usize,
                LoongArchInlineAsmReg::xr18 => 445usize,
                LoongArchInlineAsmReg::xr19 => 450usize,
                LoongArchInlineAsmReg::xr20 => 455usize,
                LoongArchInlineAsmReg::xr21 => 460usize,
                LoongArchInlineAsmReg::xr22 => 465usize,
                LoongArchInlineAsmReg::xr23 => 470usize,
                LoongArchInlineAsmReg::xr24 => 475usize,
                LoongArchInlineAsmReg::xr25 => 480usize,
                LoongArchInlineAsmReg::xr26 => 485usize,
                LoongArchInlineAsmReg::xr27 => 490usize,
                LoongArchInlineAsmReg::xr28 => 495usize,
                LoongArchInlineAsmReg::xr29 => 500usize,
                LoongArchInlineAsmReg::xr30 => 505usize,
                LoongArchInlineAsmReg::xr31 => 510usize,
            })
    }
}
#[automatically_derived]#[allow(unreachable_code)]
#[allow(non_camel_case_types)]
impl ::core::cmp::Eq for LoongArchInlineAsmReg { }
#[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: &Self) -> bool {
        ::core::intrinsics::discriminant_value(self) ==
            ::core::intrinsics::discriminant_value(other)
    }
}
#[automatically_derived]#[allow(unreachable_code)]
#[allow(non_camel_case_types)]
impl ::core::cmp::PartialOrd for LoongArchInlineAsmReg {
    #[inline]
    fn partial_cmp(&self, other: &Self)
        -> ::core::option::Option<::core::cmp::Ordering> {
        ::core::cmp::PartialOrd::partial_cmp(&::core::intrinsics::discriminant_value(self),
            &::core::intrinsics::discriminant_value(other))
    }
}
#[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) {
        ::core::hash::Hash::hash(&::core::intrinsics::discriminant_value(self),
            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) {
                match *self {
                    LoongArchInlineAsmReg::r1 =>
                        0u8.stable_hash(__hcx, __hasher),
                    LoongArchInlineAsmReg::r4 =>
                        1u8.stable_hash(__hcx, __hasher),
                    LoongArchInlineAsmReg::r5 =>
                        2u8.stable_hash(__hcx, __hasher),
                    LoongArchInlineAsmReg::r6 =>
                        3u8.stable_hash(__hcx, __hasher),
                    LoongArchInlineAsmReg::r7 =>
                        4u8.stable_hash(__hcx, __hasher),
                    LoongArchInlineAsmReg::r8 =>
                        5u8.stable_hash(__hcx, __hasher),
                    LoongArchInlineAsmReg::r9 =>
                        6u8.stable_hash(__hcx, __hasher),
                    LoongArchInlineAsmReg::r10 =>
                        7u8.stable_hash(__hcx, __hasher),
                    LoongArchInlineAsmReg::r11 =>
                        8u8.stable_hash(__hcx, __hasher),
                    LoongArchInlineAsmReg::r12 =>
                        9u8.stable_hash(__hcx, __hasher),
                    LoongArchInlineAsmReg::r13 =>
                        10u8.stable_hash(__hcx, __hasher),
                    LoongArchInlineAsmReg::r14 =>
                        11u8.stable_hash(__hcx, __hasher),
                    LoongArchInlineAsmReg::r15 =>
                        12u8.stable_hash(__hcx, __hasher),
                    LoongArchInlineAsmReg::r16 =>
                        13u8.stable_hash(__hcx, __hasher),
                    LoongArchInlineAsmReg::r17 =>
                        14u8.stable_hash(__hcx, __hasher),
                    LoongArchInlineAsmReg::r18 =>
                        15u8.stable_hash(__hcx, __hasher),
                    LoongArchInlineAsmReg::r19 =>
                        16u8.stable_hash(__hcx, __hasher),
                    LoongArchInlineAsmReg::r20 =>
                        17u8.stable_hash(__hcx, __hasher),
                    LoongArchInlineAsmReg::r23 =>
                        18u8.stable_hash(__hcx, __hasher),
                    LoongArchInlineAsmReg::r24 =>
                        19u8.stable_hash(__hcx, __hasher),
                    LoongArchInlineAsmReg::r25 =>
                        20u8.stable_hash(__hcx, __hasher),
                    LoongArchInlineAsmReg::r26 =>
                        21u8.stable_hash(__hcx, __hasher),
                    LoongArchInlineAsmReg::r27 =>
                        22u8.stable_hash(__hcx, __hasher),
                    LoongArchInlineAsmReg::r28 =>
                        23u8.stable_hash(__hcx, __hasher),
                    LoongArchInlineAsmReg::r29 =>
                        24u8.stable_hash(__hcx, __hasher),
                    LoongArchInlineAsmReg::r30 =>
                        25u8.stable_hash(__hcx, __hasher),
                    LoongArchInlineAsmReg::f0 =>
                        26u8.stable_hash(__hcx, __hasher),
                    LoongArchInlineAsmReg::f1 =>
                        27u8.stable_hash(__hcx, __hasher),
                    LoongArchInlineAsmReg::f2 =>
                        28u8.stable_hash(__hcx, __hasher),
                    LoongArchInlineAsmReg::f3 =>
                        29u8.stable_hash(__hcx, __hasher),
                    LoongArchInlineAsmReg::f4 =>
                        30u8.stable_hash(__hcx, __hasher),
                    LoongArchInlineAsmReg::f5 =>
                        31u8.stable_hash(__hcx, __hasher),
                    LoongArchInlineAsmReg::f6 =>
                        32u8.stable_hash(__hcx, __hasher),
                    LoongArchInlineAsmReg::f7 =>
                        33u8.stable_hash(__hcx, __hasher),
                    LoongArchInlineAsmReg::f8 =>
                        34u8.stable_hash(__hcx, __hasher),
                    LoongArchInlineAsmReg::f9 =>
                        35u8.stable_hash(__hcx, __hasher),
                    LoongArchInlineAsmReg::f10 =>
                        36u8.stable_hash(__hcx, __hasher),
                    LoongArchInlineAsmReg::f11 =>
                        37u8.stable_hash(__hcx, __hasher),
                    LoongArchInlineAsmReg::f12 =>
                        38u8.stable_hash(__hcx, __hasher),
                    LoongArchInlineAsmReg::f13 =>
                        39u8.stable_hash(__hcx, __hasher),
                    LoongArchInlineAsmReg::f14 =>
                        40u8.stable_hash(__hcx, __hasher),
                    LoongArchInlineAsmReg::f15 =>
                        41u8.stable_hash(__hcx, __hasher),
                    LoongArchInlineAsmReg::f16 =>
                        42u8.stable_hash(__hcx, __hasher),
                    LoongArchInlineAsmReg::f17 =>
                        43u8.stable_hash(__hcx, __hasher),
                    LoongArchInlineAsmReg::f18 =>
                        44u8.stable_hash(__hcx, __hasher),
                    LoongArchInlineAsmReg::f19 =>
                        45u8.stable_hash(__hcx, __hasher),
                    LoongArchInlineAsmReg::f20 =>
                        46u8.stable_hash(__hcx, __hasher),
                    LoongArchInlineAsmReg::f21 =>
                        47u8.stable_hash(__hcx, __hasher),
                    LoongArchInlineAsmReg::f22 =>
                        48u8.stable_hash(__hcx, __hasher),
                    LoongArchInlineAsmReg::f23 =>
                        49u8.stable_hash(__hcx, __hasher),
                    LoongArchInlineAsmReg::f24 =>
                        50u8.stable_hash(__hcx, __hasher),
                    LoongArchInlineAsmReg::f25 =>
                        51u8.stable_hash(__hcx, __hasher),
                    LoongArchInlineAsmReg::f26 =>
                        52u8.stable_hash(__hcx, __hasher),
                    LoongArchInlineAsmReg::f27 =>
                        53u8.stable_hash(__hcx, __hasher),
                    LoongArchInlineAsmReg::f28 =>
                        54u8.stable_hash(__hcx, __hasher),
                    LoongArchInlineAsmReg::f29 =>
                        55u8.stable_hash(__hcx, __hasher),
                    LoongArchInlineAsmReg::f30 =>
                        56u8.stable_hash(__hcx, __hasher),
                    LoongArchInlineAsmReg::f31 =>
                        57u8.stable_hash(__hcx, __hasher),
                    LoongArchInlineAsmReg::vr0 =>
                        58u8.stable_hash(__hcx, __hasher),
                    LoongArchInlineAsmReg::vr1 =>
                        59u8.stable_hash(__hcx, __hasher),
                    LoongArchInlineAsmReg::vr2 =>
                        60u8.stable_hash(__hcx, __hasher),
                    LoongArchInlineAsmReg::vr3 =>
                        61u8.stable_hash(__hcx, __hasher),
                    LoongArchInlineAsmReg::vr4 =>
                        62u8.stable_hash(__hcx, __hasher),
                    LoongArchInlineAsmReg::vr5 =>
                        63u8.stable_hash(__hcx, __hasher),
                    LoongArchInlineAsmReg::vr6 =>
                        64u8.stable_hash(__hcx, __hasher),
                    LoongArchInlineAsmReg::vr7 =>
                        65u8.stable_hash(__hcx, __hasher),
                    LoongArchInlineAsmReg::vr8 =>
                        66u8.stable_hash(__hcx, __hasher),
                    LoongArchInlineAsmReg::vr9 =>
                        67u8.stable_hash(__hcx, __hasher),
                    LoongArchInlineAsmReg::vr10 =>
                        68u8.stable_hash(__hcx, __hasher),
                    LoongArchInlineAsmReg::vr11 =>
                        69u8.stable_hash(__hcx, __hasher),
                    LoongArchInlineAsmReg::vr12 =>
                        70u8.stable_hash(__hcx, __hasher),
                    LoongArchInlineAsmReg::vr13 =>
                        71u8.stable_hash(__hcx, __hasher),
                    LoongArchInlineAsmReg::vr14 =>
                        72u8.stable_hash(__hcx, __hasher),
                    LoongArchInlineAsmReg::vr15 =>
                        73u8.stable_hash(__hcx, __hasher),
                    LoongArchInlineAsmReg::vr16 =>
                        74u8.stable_hash(__hcx, __hasher),
                    LoongArchInlineAsmReg::vr17 =>
                        75u8.stable_hash(__hcx, __hasher),
                    LoongArchInlineAsmReg::vr18 =>
                        76u8.stable_hash(__hcx, __hasher),
                    LoongArchInlineAsmReg::vr19 =>
                        77u8.stable_hash(__hcx, __hasher),
                    LoongArchInlineAsmReg::vr20 =>
                        78u8.stable_hash(__hcx, __hasher),
                    LoongArchInlineAsmReg::vr21 =>
                        79u8.stable_hash(__hcx, __hasher),
                    LoongArchInlineAsmReg::vr22 =>
                        80u8.stable_hash(__hcx, __hasher),
                    LoongArchInlineAsmReg::vr23 =>
                        81u8.stable_hash(__hcx, __hasher),
                    LoongArchInlineAsmReg::vr24 =>
                        82u8.stable_hash(__hcx, __hasher),
                    LoongArchInlineAsmReg::vr25 =>
                        83u8.stable_hash(__hcx, __hasher),
                    LoongArchInlineAsmReg::vr26 =>
                        84u8.stable_hash(__hcx, __hasher),
                    LoongArchInlineAsmReg::vr27 =>
                        85u8.stable_hash(__hcx, __hasher),
                    LoongArchInlineAsmReg::vr28 =>
                        86u8.stable_hash(__hcx, __hasher),
                    LoongArchInlineAsmReg::vr29 =>
                        87u8.stable_hash(__hcx, __hasher),
                    LoongArchInlineAsmReg::vr30 =>
                        88u8.stable_hash(__hcx, __hasher),
                    LoongArchInlineAsmReg::vr31 =>
                        89u8.stable_hash(__hcx, __hasher),
                    LoongArchInlineAsmReg::xr0 =>
                        90u8.stable_hash(__hcx, __hasher),
                    LoongArchInlineAsmReg::xr1 =>
                        91u8.stable_hash(__hcx, __hasher),
                    LoongArchInlineAsmReg::xr2 =>
                        92u8.stable_hash(__hcx, __hasher),
                    LoongArchInlineAsmReg::xr3 =>
                        93u8.stable_hash(__hcx, __hasher),
                    LoongArchInlineAsmReg::xr4 =>
                        94u8.stable_hash(__hcx, __hasher),
                    LoongArchInlineAsmReg::xr5 =>
                        95u8.stable_hash(__hcx, __hasher),
                    LoongArchInlineAsmReg::xr6 =>
                        96u8.stable_hash(__hcx, __hasher),
                    LoongArchInlineAsmReg::xr7 =>
                        97u8.stable_hash(__hcx, __hasher),
                    LoongArchInlineAsmReg::xr8 =>
                        98u8.stable_hash(__hcx, __hasher),
                    LoongArchInlineAsmReg::xr9 =>
                        99u8.stable_hash(__hcx, __hasher),
                    LoongArchInlineAsmReg::xr10 =>
                        100u8.stable_hash(__hcx, __hasher),
                    LoongArchInlineAsmReg::xr11 =>
                        101u8.stable_hash(__hcx, __hasher),
                    LoongArchInlineAsmReg::xr12 =>
                        102u8.stable_hash(__hcx, __hasher),
                    LoongArchInlineAsmReg::xr13 =>
                        103u8.stable_hash(__hcx, __hasher),
                    LoongArchInlineAsmReg::xr14 =>
                        104u8.stable_hash(__hcx, __hasher),
                    LoongArchInlineAsmReg::xr15 =>
                        105u8.stable_hash(__hcx, __hasher),
                    LoongArchInlineAsmReg::xr16 =>
                        106u8.stable_hash(__hcx, __hasher),
                    LoongArchInlineAsmReg::xr17 =>
                        107u8.stable_hash(__hcx, __hasher),
                    LoongArchInlineAsmReg::xr18 =>
                        108u8.stable_hash(__hcx, __hasher),
                    LoongArchInlineAsmReg::xr19 =>
                        109u8.stable_hash(__hcx, __hasher),
                    LoongArchInlineAsmReg::xr20 =>
                        110u8.stable_hash(__hcx, __hasher),
                    LoongArchInlineAsmReg::xr21 =>
                        111u8.stable_hash(__hcx, __hasher),
                    LoongArchInlineAsmReg::xr22 =>
                        112u8.stable_hash(__hcx, __hasher),
                    LoongArchInlineAsmReg::xr23 =>
                        113u8.stable_hash(__hcx, __hasher),
                    LoongArchInlineAsmReg::xr24 =>
                        114u8.stable_hash(__hcx, __hasher),
                    LoongArchInlineAsmReg::xr25 =>
                        115u8.stable_hash(__hcx, __hasher),
                    LoongArchInlineAsmReg::xr26 =>
                        116u8.stable_hash(__hcx, __hasher),
                    LoongArchInlineAsmReg::xr27 =>
                        117u8.stable_hash(__hcx, __hasher),
                    LoongArchInlineAsmReg::xr28 =>
                        118u8.stable_hash(__hcx, __hasher),
                    LoongArchInlineAsmReg::xr29 =>
                        119u8.stable_hash(__hcx, __hasher),
                    LoongArchInlineAsmReg::xr30 =>
                        120u8.stable_hash(__hcx, __hasher),
                    LoongArchInlineAsmReg::xr31 =>
                        121u8.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}