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