aboutsummaryrefslogtreecommitdiff
path: root/src/cmd/asm
diff options
context:
space:
mode:
authorGuoqi Chen <chenguoqi@loongson.cn>2024-05-23 13:43:20 +0800
committerGopher Robot <gobot@golang.org>2024-08-03 05:06:40 +0000
commitf428c7b729d3d9b37ed4dacddcd7ff88f4213f70 (patch)
tree6fbebdd627e16701f9e49dda540baf393c220996 /src/cmd/asm
parent3ae819ad1c962e5b4e6d4a7d855477b02755951b (diff)
downloadgo-f428c7b729d3d9b37ed4dacddcd7ff88f4213f70.tar.xz
cmd/internal/obj/loong64: add FLDX,FSTX,LDX.STX instructions support
The LDX.{B,BU,H,HU,W,WU,D},STX.{B,H,W,D}, FLDX.{S,D}, FSTX.{S,D} instruction on Loong64 implements memory access operations using register offset Go asm syntax: MOV{B,BU,H,HU,W,WU,V} (RJ)(RK), RD MOV{B,H,W,V} RD, (RJ)(RK) MOV{F,D} (RJ)(RK), FD MOV{F,D} FD, (RJ)(RK) Equivalent platform assembler syntax: ldx.{b,bu,h,hu,w,wu,d} rd, rj, rk stx.{b,h,w,d} rd, rj, rk fldx.{s,d} fd, rj, rk fstx.{s,d} fd, rj, rk Ref: https://loongson.github.io/LoongArch-Documentation/LoongArch-Vol1-EN.html Change-Id: Ic7d13bf45dab8342f034b6469465e6337a087144 Reviewed-on: https://go-review.googlesource.com/c/go/+/588215 Reviewed-by: sophie zhao <zhaoxiaolin@loongson.cn> Reviewed-by: Michael Knyszek <mknyszek@google.com> Reviewed-by: Cherry Mui <cherryyz@google.com> LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com> Reviewed-by: Qiqi Huang <huangqiqi@loongson.cn> Reviewed-by: Meidan Li <limeidan@loongson.cn> Auto-Submit: abner chenc <chenguoqi@loongson.cn>
Diffstat (limited to 'src/cmd/asm')
-rw-r--r--src/cmd/asm/internal/asm/testdata/loong64enc1.s23
1 files changed, 23 insertions, 0 deletions
diff --git a/src/cmd/asm/internal/asm/testdata/loong64enc1.s b/src/cmd/asm/internal/asm/testdata/loong64enc1.s
index ba3327d4e8..b24aa2fe7c 100644
--- a/src/cmd/asm/internal/asm/testdata/loong64enc1.s
+++ b/src/cmd/asm/internal/asm/testdata/loong64enc1.s
@@ -309,3 +309,26 @@ lable2:
FTINTRNEWD F0, F2 // 02c81a01
FTINTRNEVF F0, F2 // 02e41a01
FTINTRNEVD F0, F2 // 02e81a01
+
+ // LDX.{B,BU,H,HU,W,WU,D} instructions
+ MOVB (R14)(R13), R12 // cc350038
+ MOVBU (R14)(R13), R12 // cc352038
+ MOVH (R14)(R13), R12 // cc350438
+ MOVHU (R14)(R13), R12 // cc352438
+ MOVW (R14)(R13), R12 // cc350838
+ MOVWU (R14)(R13), R12 // cc352838
+ MOVV (R14)(R13), R12 // cc350c38
+
+ // STX.{B,H,W,D} instructions
+ MOVB R12, (R14)(R13) // cc351038
+ MOVH R12, (R14)(R13) // cc351438
+ MOVW R12, (R14)(R13) // cc351838
+ MOVV R12, (R14)(R13) // cc351c38
+
+ // FLDX.{S,D} instructions
+ MOVF (R14)(R13), F2 // c2353038
+ MOVD (R14)(R13), F2 // c2353438
+
+ // FSTX.{S,D} instructions
+ MOVF F2, (R14)(R13) // c2353838
+ MOVD F2, (R14)(R13) // c2353c38