Add supported asm types for LoongArch32

This commit is contained in:
WANG Rui
2025-06-09 22:29:59 +08:00
parent 7c10378e1f
commit de8a91b51c
2 changed files with 11 additions and 4 deletions

View File

@@ -34,11 +34,13 @@ impl LoongArchInlineAsmRegClass {
pub fn supported_types( pub fn supported_types(
self, self,
_arch: InlineAsmArch, arch: InlineAsmArch,
) -> &'static [(InlineAsmType, Option<Symbol>)] { ) -> &'static [(InlineAsmType, Option<Symbol>)] {
match self { match (self, arch) {
Self::reg => types! { _: I8, I16, I32, I64, F32, F64; }, (Self::reg, InlineAsmArch::LoongArch64) => types! { _: I8, I16, I32, I64, F32, F64; },
Self::freg => types! { f: F32; d: F64; }, (Self::reg, InlineAsmArch::LoongArch32) => types! { _: I8, I16, I32, F32; },
(Self::freg, _) => types! { f: F32; d: F64; },
_ => unreachable!("unsupported register class"),
} }
} }
} }

View File

@@ -19,6 +19,7 @@ This feature tracks `asm!` and `global_asm!` support for the following architect
- M68k - M68k
- CSKY - CSKY
- SPARC - SPARC
- LoongArch32
## Register classes ## Register classes
@@ -53,6 +54,8 @@ This feature tracks `asm!` and `global_asm!` support for the following architect
| CSKY | `freg` | `f[0-31]` | `f` | | CSKY | `freg` | `f[0-31]` | `f` |
| SPARC | `reg` | `r[2-29]` | `r` | | SPARC | `reg` | `r[2-29]` | `r` |
| SPARC | `yreg` | `y` | Only clobbers | | SPARC | `yreg` | `y` | Only clobbers |
| LoongArch32 | `reg` | `$r1`, `$r[4-20]`, `$r[23,30]` | `r` |
| LoongArch32 | `freg` | `$f[0-31]` | `f` |
> **Notes**: > **Notes**:
> - NVPTX doesn't have a fixed register set, so named registers are not supported. > - NVPTX doesn't have a fixed register set, so named registers are not supported.
@@ -91,6 +94,8 @@ This feature tracks `asm!` and `global_asm!` support for the following architect
| CSKY | `freg` | None | `f32`, | | CSKY | `freg` | None | `f32`, |
| SPARC | `reg` | None | `i8`, `i16`, `i32`, `i64` (SPARC64 only) | | SPARC | `reg` | None | `i8`, `i16`, `i32`, `i64` (SPARC64 only) |
| SPARC | `yreg` | N/A | Only clobbers | | SPARC | `yreg` | N/A | Only clobbers |
| LoongArch32 | `reg` | None | `i8`, `i16`, `i32`, `f32` |
| LoongArch32 | `freg` | None | `f32`, `f64` |
## Register aliases ## Register aliases