]> Cypherpunks repositories - gostls13.git/commitdiff
cmd/internal/obj/loong64: add support for movgr2cf and movcf2gr instructions
authorHuang Qiqi <huangqiqi@loongson.cn>
Mon, 13 Mar 2023 10:50:49 +0000 (18:50 +0800)
committerBen Shi <powerman1st@163.com>
Tue, 21 Mar 2023 06:53:28 +0000 (06:53 +0000)
Change-Id: I7ff3c8df24ed7990fe104bc2530354c0bd5fe018
Reviewed-on: https://go-review.googlesource.com/c/go/+/475576
TryBot-Result: Gopher Robot <gobot@golang.org>
Run-TryBot: Cherry Mui <cherryyz@google.com>
Reviewed-by: Cherry Mui <cherryyz@google.com>
Reviewed-by: Dmitri Shuralyov <dmitshur@google.com>
Reviewed-by: abner chenc <chenguoqi@loongson.cn>
Reviewed-by: xiaodong liu <teaofmoli@gmail.com>
Reviewed-by: WANG Xuerui <git@xen0n.name>
src/cmd/asm/internal/asm/testdata/loong64enc1.s
src/cmd/internal/obj/loong64/asm.go

index 0cc077c091b1198d47fe55052cb230e058e7e731..4f3cb2b2ee0e7da6e115c46521b1f0e7a1d1092b 100644 (file)
@@ -222,3 +222,6 @@ lable2:
        RDTIMELW R4, R0                 // 80600000
        RDTIMEHW R4, R0                 // 80640000
        RDTIMED  R4, R5                 // 85680000
+
+       MOVV    FCC0, R4                // 04dc1401
+       MOVV    R4, FCC0                // 80d81401
index f4311c4c072b16c332d164b40f6f9919d2020ada..086cad4aa4e3bd93945340802e6401cc8f66f751 100644 (file)
@@ -324,6 +324,9 @@ var optab = []Optab{
        {AMOVV, C_REG, C_NONE, C_FREG, C_NONE, 47, 4, 0, sys.Loong64, 0},
        {AMOVV, C_FREG, C_NONE, C_REG, C_NONE, 48, 4, 0, sys.Loong64, 0},
 
+       {AMOVV, C_FCCREG, C_NONE, C_REG, C_NONE, 63, 4, 0, sys.Loong64, 0},
+       {AMOVV, C_REG, C_NONE, C_FCCREG, C_NONE, 64, 4, 0, sys.Loong64, 0},
+
        {AMOVW, C_ADDCON, C_NONE, C_FREG, C_NONE, 34, 8, 0, sys.Loong64, 0},
        {AMOVW, C_ANDCON, C_NONE, C_FREG, C_NONE, 34, 8, 0, sys.Loong64, 0},
 
@@ -1622,6 +1625,14 @@ func (c *ctxt0) asmout(p *obj.Prog, o *Optab, out []uint32) {
 
        case 62: // rdtimex rd, rj
                o1 = OP_RR(c.oprr(p.As), uint32(p.To.Reg), uint32(p.RegTo2))
+
+       case 63: // movv c_fcc0, c_reg ==> movcf2gr rd, cj
+               a := OP_TEN(8, 1335)
+               o1 = OP_RR(a, uint32(p.From.Reg), uint32(p.To.Reg))
+
+       case 64: // movv c_reg, c_fcc0 ==> movgr2cf cd, rj
+               a := OP_TEN(8, 1334)
+               o1 = OP_RR(a, uint32(p.From.Reg), uint32(p.To.Reg))
        }
 
        out[0] = o1