diff options
| author | WANG Rui <wangrui@loongson.cn> | 2023-05-04 23:58:19 +0800 |
|---|---|---|
| committer | WANG Rui <wangrui@loongson.cn> | 2023-05-05 14:21:13 +0800 |
| commit | 08fc45177196317a9f6d4c4f6d105e0b45381111 (patch) | |
| tree | 726109cbe3c0f7715ae19f22e1494fe667983bb3 | |
| parent | 74c4821045c68d42bb8b8a7c998bdb5c2a72bd0d (diff) | |
| download | rust-08fc45177196317a9f6d4c4f6d105e0b45381111.tar.gz rust-08fc45177196317a9f6d4c4f6d105e0b45381111.zip | |
asm: loongarch64: Implementation of clobber_abi
| -rw-r--r-- | compiler/rustc_target/src/asm/mod.rs | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/compiler/rustc_target/src/asm/mod.rs b/compiler/rustc_target/src/asm/mod.rs index 266691b2c88..705966f5237 100644 --- a/compiler/rustc_target/src/asm/mod.rs +++ b/compiler/rustc_target/src/asm/mod.rs @@ -839,6 +839,7 @@ pub enum InlineAsmClobberAbi { AArch64, AArch64NoX18, RiscV, + LoongArch, } impl InlineAsmClobberAbi { @@ -880,6 +881,10 @@ impl InlineAsmClobberAbi { "C" | "system" | "efiapi" => Ok(InlineAsmClobberAbi::RiscV), _ => Err(&["C", "system", "efiapi"]), }, + InlineAsmArch::LoongArch64 => match name { + "C" | "system" | "efiapi" => Ok(InlineAsmClobberAbi::LoongArch), + _ => Err(&["C", "system", "efiapi"]), + }, _ => Err(&[]), } } @@ -1022,6 +1027,21 @@ impl InlineAsmClobberAbi { v24, v25, v26, v27, v28, v29, v30, v31, } }, + InlineAsmClobberAbi::LoongArch => clobbered_regs! { + LoongArch LoongArchInlineAsmReg { + // ra + r1, + // a0-a7 + r4, r5, r6, r7, r8, r9, r10, r11, + // t0-t8 + r12, r13, r14, r15, r16, r17, r18, r19, r20, + // fa0-fa7 + f0, f1, f2, f3, f4, f5, f6, f7, + // ft0-ft15 + f8, f9, f10, f11, f12, f13, f14, f15, + f16, f17, f18, f19, f20, f21, f22, f23, + } + }, } } } |
