aboutsummaryrefslogtreecommitdiff
path: root/src/cmd/internal
diff options
context:
space:
mode:
authorHuang Qiqi <huangqiqi@loongson.cn>2023-03-13 18:50:49 +0800
committerBen Shi <powerman1st@163.com>2023-03-21 06:53:28 +0000
commit2ef70d9d0f98832c8103a7968b195e560a8bb262 (patch)
tree6daef374655412842365907571acd882e5b1524f /src/cmd/internal
parent6f2ef5ec98e1a14ee7a2805f68241cfa5feff8bd (diff)
downloadgo-2ef70d9d0f98832c8103a7968b195e560a8bb262.tar.xz
cmd/internal/obj/loong64: add support for movgr2cf and movcf2gr instructions
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>
Diffstat (limited to 'src/cmd/internal')
-rw-r--r--src/cmd/internal/obj/loong64/asm.go11
1 files changed, 11 insertions, 0 deletions
diff --git a/src/cmd/internal/obj/loong64/asm.go b/src/cmd/internal/obj/loong64/asm.go
index f4311c4c07..086cad4aa4 100644
--- a/src/cmd/internal/obj/loong64/asm.go
+++ b/src/cmd/internal/obj/loong64/asm.go
@@ -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