diff options
| author | Guoqi Chen <chenguoqi@loongson.cn> | 2024-05-23 13:43:20 +0800 |
|---|---|---|
| committer | Gopher Robot <gobot@golang.org> | 2024-08-03 05:06:40 +0000 |
| commit | f428c7b729d3d9b37ed4dacddcd7ff88f4213f70 (patch) | |
| tree | 6fbebdd627e16701f9e49dda540baf393c220996 /src/cmd/asm | |
| parent | 3ae819ad1c962e5b4e6d4a7d855477b02755951b (diff) | |
| download | go-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.s | 23 |
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 |
