aboutsummaryrefslogtreecommitdiff
path: root/src/cmd/internal/obj
diff options
context:
space:
mode:
Diffstat (limited to 'src/cmd/internal/obj')
-rw-r--r--src/cmd/internal/obj/mips/a.out.go2
-rw-r--r--src/cmd/internal/obj/mips/anames.go2
-rw-r--r--src/cmd/internal/obj/mips/asm0.go15
3 files changed, 18 insertions, 1 deletions
diff --git a/src/cmd/internal/obj/mips/a.out.go b/src/cmd/internal/obj/mips/a.out.go
index ddd048a17f..c6ce53a8da 100644
--- a/src/cmd/internal/obj/mips/a.out.go
+++ b/src/cmd/internal/obj/mips/a.out.go
@@ -390,6 +390,8 @@ const (
AREM
AREMU
ARFE
+ AROTR
+ AROTRV
ASC
ASCV
ASGT
diff --git a/src/cmd/internal/obj/mips/anames.go b/src/cmd/internal/obj/mips/anames.go
index 2a44e4ca70..ca2ad5ae26 100644
--- a/src/cmd/internal/obj/mips/anames.go
+++ b/src/cmd/internal/obj/mips/anames.go
@@ -78,6 +78,8 @@ var Anames = []string{
"REM",
"REMU",
"RFE",
+ "ROTR",
+ "ROTRV",
"SC",
"SCV",
"SGT",
diff --git a/src/cmd/internal/obj/mips/asm0.go b/src/cmd/internal/obj/mips/asm0.go
index fd29f9fa21..e475ffdc14 100644
--- a/src/cmd/internal/obj/mips/asm0.go
+++ b/src/cmd/internal/obj/mips/asm0.go
@@ -1022,10 +1022,12 @@ func buildop(ctxt *obj.Link) {
case ASLL:
opset(ASRL, r0)
opset(ASRA, r0)
+ opset(AROTR, r0)
case ASLLV:
opset(ASRAV, r0)
opset(ASRLV, r0)
+ opset(AROTRV, r0)
case ASUB:
opset(ASUBU, r0)
@@ -1732,12 +1734,16 @@ func (c *ctxt0) oprrr(a obj.As) uint32 {
return OP(0, 6)
case ASRA:
return OP(0, 7)
+ case AROTR:
+ return OP(8, 6)
case ASLLV:
return OP(2, 4)
case ASRLV:
return OP(2, 6)
case ASRAV:
return OP(2, 7)
+ case AROTRV:
+ return OP(10, 6)
case AADDV:
return OP(5, 4)
case AADDVU:
@@ -1916,6 +1922,8 @@ func (c *ctxt0) opirr(a obj.As) uint32 {
return OP(0, 2)
case ASRA:
return OP(0, 3)
+ case AROTR:
+ return OP(0, 2) | 1<<21
case AADDV:
return SP(3, 0)
case AADDVU:
@@ -2028,12 +2036,16 @@ func (c *ctxt0) opirr(a obj.As) uint32 {
return OP(7, 2)
case ASRAV:
return OP(7, 3)
+ case AROTRV:
+ return OP(7, 2) | 1<<21
case -ASLLV:
return OP(7, 4)
case -ASRLV:
return OP(7, 6)
case -ASRAV:
return OP(7, 7)
+ case -AROTRV:
+ return OP(7, 6) | 1<<21
case ATEQ:
return OP(6, 4)
@@ -2061,7 +2073,8 @@ func vshift(a obj.As) bool {
switch a {
case ASLLV,
ASRLV,
- ASRAV:
+ ASRAV,
+ AROTRV:
return true
}
return false