|
@@ -249,13 +249,35 @@
|
|
|
.set pop
|
|
|
.endm
|
|
|
#else
|
|
|
+
|
|
|
+#ifdef CONFIG_CPU_MICROMIPS
|
|
|
+#define CFC_MSA_INSN 0x587e0056
|
|
|
+#define CTC_MSA_INSN 0x583e0816
|
|
|
+#define LDD_MSA_INSN 0x58000837
|
|
|
+#define STD_MSA_INSN 0x5800083f
|
|
|
+#define COPY_UW_MSA_INSN 0x58f00056
|
|
|
+#define COPY_UD_MSA_INSN 0x58f80056
|
|
|
+#define INSERT_W_MSA_INSN 0x59300816
|
|
|
+#define INSERT_D_MSA_INSN 0x59380816
|
|
|
+#else
|
|
|
+#define CFC_MSA_INSN 0x787e0059
|
|
|
+#define CTC_MSA_INSN 0x783e0819
|
|
|
+#define LDD_MSA_INSN 0x78000823
|
|
|
+#define STD_MSA_INSN 0x78000827
|
|
|
+#define COPY_UW_MSA_INSN 0x78f00059
|
|
|
+#define COPY_UD_MSA_INSN 0x78f80059
|
|
|
+#define INSERT_W_MSA_INSN 0x79300819
|
|
|
+#define INSERT_D_MSA_INSN 0x79380819
|
|
|
+#endif
|
|
|
+
|
|
|
/*
|
|
|
* Temporary until all toolchains in use include MSA support.
|
|
|
*/
|
|
|
.macro cfcmsa rd, cs
|
|
|
.set push
|
|
|
.set noat
|
|
|
- .word 0x787e0059 | (\cs << 11)
|
|
|
+ .insn
|
|
|
+ .word CFC_MSA_INSN | (\cs << 11)
|
|
|
move \rd, $1
|
|
|
.set pop
|
|
|
.endm
|
|
@@ -264,7 +286,7 @@
|
|
|
.set push
|
|
|
.set noat
|
|
|
move $1, \rs
|
|
|
- .word 0x783e0819 | (\cd << 6)
|
|
|
+ .word CTC_MSA_INSN | (\cd << 6)
|
|
|
.set pop
|
|
|
.endm
|
|
|
|
|
@@ -272,7 +294,7 @@
|
|
|
.set push
|
|
|
.set noat
|
|
|
add $1, \base, \off
|
|
|
- .word 0x78000823 | (\wd << 6)
|
|
|
+ .word LDD_MSA_INSN | (\wd << 6)
|
|
|
.set pop
|
|
|
.endm
|
|
|
|
|
@@ -280,14 +302,15 @@
|
|
|
.set push
|
|
|
.set noat
|
|
|
add $1, \base, \off
|
|
|
- .word 0x78000827 | (\wd << 6)
|
|
|
+ .word STD_MSA_INSN | (\wd << 6)
|
|
|
.set pop
|
|
|
.endm
|
|
|
|
|
|
.macro copy_u_w rd, ws, n
|
|
|
.set push
|
|
|
.set noat
|
|
|
- .word 0x78f00059 | (\n << 16) | (\ws << 11)
|
|
|
+ .insn
|
|
|
+ .word COPY_UW_MSA_INSN | (\n << 16) | (\ws << 11)
|
|
|
/* move triggers an assembler bug... */
|
|
|
or \rd, $1, zero
|
|
|
.set pop
|
|
@@ -296,7 +319,8 @@
|
|
|
.macro copy_u_d rd, ws, n
|
|
|
.set push
|
|
|
.set noat
|
|
|
- .word 0x78f80059 | (\n << 16) | (\ws << 11)
|
|
|
+ .insn
|
|
|
+ .word COPY_UD_MSA_INSN | (\n << 16) | (\ws << 11)
|
|
|
/* move triggers an assembler bug... */
|
|
|
or \rd, $1, zero
|
|
|
.set pop
|
|
@@ -307,7 +331,7 @@
|
|
|
.set noat
|
|
|
/* move triggers an assembler bug... */
|
|
|
or $1, \rs, zero
|
|
|
- .word 0x79300819 | (\n << 16) | (\wd << 6)
|
|
|
+ .word INSERT_W_MSA_INSN | (\n << 16) | (\wd << 6)
|
|
|
.set pop
|
|
|
.endm
|
|
|
|
|
@@ -316,7 +340,7 @@
|
|
|
.set noat
|
|
|
/* move triggers an assembler bug... */
|
|
|
or $1, \rs, zero
|
|
|
- .word 0x79380819 | (\n << 16) | (\wd << 6)
|
|
|
+ .word INSERT_D_MSA_INSN | (\n << 16) | (\wd << 6)
|
|
|
.set pop
|
|
|
.endm
|
|
|
#endif
|