diff --git a/src/cmd/asm/internal/asm/testdata/loong64enc1.s b/src/cmd/asm/internal/asm/testdata/loong64enc1.s
index e648d178dddc19f6f7338ceb412e2dea366a9753..e16bd78feefeebf5ce23cf64562d9ae1e650db2c 100644
--- a/src/cmd/asm/internal/asm/testdata/loong64enc1.s
+++ b/src/cmd/asm/internal/asm/testdata/loong64enc1.s
@@ -269,3 +269,12 @@ lable2:
 	AMMAXDBVU	R14, (R13), R12 // acb97038
 	AMMINDBWU	R14, (R13), R12 // ac397138
 	AMMINDBVU	R14, (R13), R12 // acb97138
+
+	FMINF	F4, F5, F6		// a6900a01
+	FMINF	F4, F5			// a5900a01
+	FMIND	F4, F5, F6		// a6100b01
+	FMIND	F4, F5			// a5100b01
+	FMAXF	F4, F5, F6		// a6900801
+	FMAXF	F4, F5			// a5900801
+	FMAXD	F4, F5, F6		// a6100901
+	FMAXD	F4, F5			// a5100901
diff --git a/src/cmd/internal/obj/loong64/a.out.go b/src/cmd/internal/obj/loong64/a.out.go
index cf5c74fde2ebb0270d90affa263fb331f4aa3767..9309a3b09a9c1f5abb74a71438c97ccf9261d5b1 100644
--- a/src/cmd/internal/obj/loong64/a.out.go
+++ b/src/cmd/internal/obj/loong64/a.out.go
@@ -440,6 +440,12 @@ const (
 	ARDTIMED
 	ACPUCFG
 
+	// 3.2.1.3
+	AFMINF
+	AFMIND
+	AFMAXF
+	AFMAXD
+
 	ALAST
 
 	// aliases
diff --git a/src/cmd/internal/obj/loong64/anames.go b/src/cmd/internal/obj/loong64/anames.go
index 9bfc57e239b7e76b2da1df6f18c46a68cce785c6..42d9ea4d18e5aaa725ae7ee4970e0096d8f439b0 100644
--- a/src/cmd/internal/obj/loong64/anames.go
+++ b/src/cmd/internal/obj/loong64/anames.go
@@ -179,5 +179,9 @@ var Anames = []string{
 	"RDTIMEHW",
 	"RDTIMED",
 	"CPUCFG",
+	"FMINF",
+	"FMIND",
+	"FMAXF",
+	"FMAXD",
 	"LAST",
 }
diff --git a/src/cmd/internal/obj/loong64/asm.go b/src/cmd/internal/obj/loong64/asm.go
index 8c9ff2096ed14a9447c290c7e513f83adf6fc1d1..c0f9dee380491d230b414ca92cb3ef128bbe5298 100644
--- a/src/cmd/internal/obj/loong64/asm.go
+++ b/src/cmd/internal/obj/loong64/asm.go
@@ -1052,6 +1052,10 @@ func buildop(ctxt *obj.Link) {
 			opset(ASUBF, r0)
 			opset(ASUBD, r0)
 			opset(AADDD, r0)
+			opset(AFMINF, r0)
+			opset(AFMIND, r0)
+			opset(AFMAXF, r0)
+			opset(AFMAXD, r0)
 
 		case AAND:
 			opset(AOR, r0)
@@ -1872,6 +1876,14 @@ func (c *ctxt0) oprrr(a obj.As) uint32 {
 		return 0x0c2<<20 | 0x3<<15 // FCMP.SLT.D
 	case ACMPGTF:
 		return 0x0c1<<20 | 0x3<<15 // FCMP.SLT.S
+	case AFMINF:
+		return 0x215 << 15 // fmin.s
+	case AFMIND:
+		return 0x216 << 15 // fmin.d
+	case AFMAXF:
+		return 0x211 << 15 // fmax.s
+	case AFMAXD:
+		return 0x212 << 15 // fmax.d
 	}
 
 	if a < 0 {