@@ -27,7 +27,7 @@ Inline assembly is currently supported on the following architectures:
27
27
- RISC-V
28
28
- NVPTX
29
29
- Hexagon
30
- - MIPS32
30
+ - MIPS32r2 and MIPS64r2
31
31
32
32
## Basic usage
33
33
@@ -513,8 +513,8 @@ Here is the list of currently supported register classes:
513
513
| ARM | ` qreg ` | ` q[0-15] ` | ` w ` |
514
514
| ARM | ` qreg_low8 ` | ` q[0-7] ` | ` t ` |
515
515
| ARM | ` qreg_low4 ` | ` q[0-3] ` | ` x ` |
516
- | MIPS32 | ` reg ` | ` $[2-25] ` | ` r ` |
517
- | MIPS32 | ` freg ` | ` $f[0-31] ` | ` f ` |
516
+ | MIPS | ` reg ` | ` $[2-25] ` | ` r ` |
517
+ | MIPS | ` freg ` | ` $f[0-31] ` | ` f ` |
518
518
| NVPTX | ` reg16 ` | None\* | ` h ` |
519
519
| NVPTX | ` reg32 ` | None\* | ` r ` |
520
520
| NVPTX | ` reg64 ` | None\* | ` l ` |
@@ -552,6 +552,8 @@ Each register class has constraints on which value types they can be used with.
552
552
| ARM | ` qreg ` | ` neon ` | ` i8x16 ` , ` i16x8 ` , ` i32x4 ` , ` i64x2 ` , ` f32x4 ` |
553
553
| MIPS32 | ` reg ` | None | ` i8 ` , ` i16 ` , ` i32 ` , ` f32 ` |
554
554
| MIPS32 | ` freg ` | None | ` f32 ` , ` f64 ` |
555
+ | MIPS64 | ` reg ` | None | ` i8 ` , ` i16 ` , ` i32 ` , ` i64 ` , ` f32 ` , ` f64 ` |
556
+ | MIPS64 | ` freg ` | None | ` f32 ` , ` f64 ` |
555
557
| NVPTX | ` reg16 ` | None | ` i8 ` , ` i16 ` |
556
558
| NVPTX | ` reg32 ` | None | ` i8 ` , ` i16 ` , ` i32 ` , ` f32 ` |
557
559
| NVPTX | ` reg64 ` | None | ` i8 ` , ` i16 ` , ` i32 ` , ` f32 ` , ` i64 ` , ` f64 ` |
@@ -637,11 +639,11 @@ Some registers cannot be used for input or output operands:
637
639
| x86 | ` st([0-7]) ` | x87 registers are not currently supported (but may be in the future). |
638
640
| AArch64 | ` xzr ` | This is a constant zero register which can't be modified. |
639
641
| ARM | ` pc ` | This is the program counter, not a real register. |
640
- | MIPS32 | ` $0 ` or ` $zero ` | This is a constant zero register which can't be modified. |
641
- | MIPS32 | ` $1 ` or ` $at ` | Reserved for assembler. |
642
- | MIPS32 | ` $26 ` /` $k0 ` , ` $27 ` /` $k1 ` | OS-reserved registers. |
643
- | MIPS32 | ` $28 ` /` $gp ` | Global pointer cannot be used as inputs or outputs. |
644
- | MIPS32 | ` $ra ` | Return address cannot be used as inputs or outputs. |
642
+ | MIPS | ` $0 ` or ` $zero ` | This is a constant zero register which can't be modified. |
643
+ | MIPS | ` $1 ` or ` $at ` | Reserved for assembler. |
644
+ | MIPS | ` $26 ` /` $k0 ` , ` $27 ` /` $k1 ` | OS-reserved registers. |
645
+ | MIPS | ` $28 ` /` $gp ` | Global pointer cannot be used as inputs or outputs. |
646
+ | MIPS | ` $ra ` | Return address cannot be used as inputs or outputs. |
645
647
| RISC-V | ` x0 ` | This is a constant zero register which can't be modified. |
646
648
| RISC-V | ` gp ` , ` tp ` | These registers are reserved and cannot be used as inputs or outputs. |
647
649
| Hexagon | ` lr ` | This is the link register which cannot be used as an input or output. |
@@ -689,8 +691,8 @@ The supported modifiers are a subset of LLVM's (and GCC's) [asm template argumen
689
691
| ARM | ` dreg ` | None | ` d0 ` | ` P ` |
690
692
| ARM | ` qreg ` | None | ` q0 ` | ` q ` |
691
693
| ARM | ` qreg ` | ` e ` / ` f ` | ` d0 ` / ` d1 ` | ` e ` / ` f ` |
692
- | MIPS32 | ` reg ` | None | ` $2 ` | None |
693
- | MIPS32 | ` freg ` | None | ` $f0 ` | None |
694
+ | MIPS | ` reg ` | None | ` $2 ` | None |
695
+ | MIPS | ` freg ` | None | ` $f0 ` | None |
694
696
| NVPTX | ` reg16 ` | None | ` rs0 ` | None |
695
697
| NVPTX | ` reg32 ` | None | ` r0 ` | None |
696
698
| NVPTX | ` reg64 ` | None | ` rd0 ` | None |
0 commit comments