diff options
Diffstat (limited to 'src/cmd/internal')
| -rw-r--r-- | src/cmd/internal/obj/loong64/a.out.go | 17 | ||||
| -rw-r--r-- | src/cmd/internal/obj/loong64/anames.go | 16 | ||||
| -rw-r--r-- | src/cmd/internal/obj/loong64/asm.go | 48 |
3 files changed, 81 insertions, 0 deletions
diff --git a/src/cmd/internal/obj/loong64/a.out.go b/src/cmd/internal/obj/loong64/a.out.go index 5e8210d5dd..c88c556bfe 100644 --- a/src/cmd/internal/obj/loong64/a.out.go +++ b/src/cmd/internal/obj/loong64/a.out.go @@ -950,6 +950,23 @@ const ( AXVFRSQRTF AXVFRSQRTD + AVADDF + AVADDD + AVSUBF + AVSUBD + AVMULF + AVMULD + AVDIVF + AVDIVD + AXVADDF + AXVADDD + AXVSUBF + AXVSUBD + AXVMULF + AXVMULD + AXVDIVF + AXVDIVD + // LSX and LASX floating point conversion instructions AVFRINTRNEF AVFRINTRNED diff --git a/src/cmd/internal/obj/loong64/anames.go b/src/cmd/internal/obj/loong64/anames.go index 86110c217d..533e5f4154 100644 --- a/src/cmd/internal/obj/loong64/anames.go +++ b/src/cmd/internal/obj/loong64/anames.go @@ -449,6 +449,22 @@ var Anames = []string{ "XVFRECIPD", "XVFRSQRTF", "XVFRSQRTD", + "VADDF", + "VADDD", + "VSUBF", + "VSUBD", + "VMULF", + "VMULD", + "VDIVF", + "VDIVD", + "XVADDF", + "XVADDD", + "XVSUBF", + "XVSUBD", + "XVMULF", + "XVMULD", + "XVDIVF", + "XVDIVD", "VFRINTRNEF", "VFRINTRNED", "VFRINTRZF", diff --git a/src/cmd/internal/obj/loong64/asm.go b/src/cmd/internal/obj/loong64/asm.go index 1b46aa68a1..dc9fafc0e2 100644 --- a/src/cmd/internal/obj/loong64/asm.go +++ b/src/cmd/internal/obj/loong64/asm.go @@ -1610,6 +1610,14 @@ func buildop(ctxt *obj.Link) { opset(AVMULWODWHUH, r0) opset(AVMULWODVWUW, r0) opset(AVMULWODQVUV, r0) + opset(AVADDF, r0) + opset(AVADDD, r0) + opset(AVSUBF, r0) + opset(AVSUBD, r0) + opset(AVMULF, r0) + opset(AVMULD, r0) + opset(AVDIVF, r0) + opset(AVDIVD, r0) case AXVSEQB: opset(AXVSEQH, r0) @@ -1675,6 +1683,14 @@ func buildop(ctxt *obj.Link) { opset(AXVMULWODWHUH, r0) opset(AXVMULWODVWUW, r0) opset(AXVMULWODQVUV, r0) + opset(AXVADDF, r0) + opset(AXVADDD, r0) + opset(AXVSUBF, r0) + opset(AXVSUBD, r0) + opset(AXVMULF, r0) + opset(AXVMULD, r0) + opset(AXVDIVF, r0) + opset(AXVDIVD, r0) case AVANDB: opset(AVORB, r0) @@ -3387,6 +3403,38 @@ func (c *ctxt0) oprrr(a obj.As) uint32 { return 0xe912 << 15 // xvmuh.wu case AXVMUHVU: return 0xe913 << 15 // xvmuh.du + case AVADDF: + return 0xe261 << 15 // vfadd.s + case AVADDD: + return 0xe262 << 15 // vfadd.d + case AVSUBF: + return 0xe265 << 15 // vfsub.s + case AVSUBD: + return 0xe266 << 15 // vfsub.d + case AVMULF: + return 0xe271 << 15 // vfmul.s + case AVMULD: + return 0xe272 << 15 // vfmul.d + case AVDIVF: + return 0xe275 << 15 // vfdiv.s + case AVDIVD: + return 0xe276 << 15 // vfdiv.d + case AXVADDF: + return 0xea61 << 15 // xvfadd.s + case AXVADDD: + return 0xea62 << 15 // xvfadd.d + case AXVSUBF: + return 0xea65 << 15 // xvfsub.s + case AXVSUBD: + return 0xea66 << 15 // xvfsub.d + case AXVMULF: + return 0xea71 << 15 // xvfmul.s + case AXVMULD: + return 0xea72 << 15 // xvfmul.d + case AXVDIVF: + return 0xea75 << 15 // xvfdiv.s + case AXVDIVD: + return 0xea76 << 15 // xvfdiv.d } if a < 0 { |
