public inbox for binutils-cvs@sourceware.org
 help / color / mirror / Atom feed
* [binutils-gdb] RISC-V: add F- and D-extension testcases
@ 2023-11-03  9:03 Jan Beulich
  0 siblings, 0 replies; only message in thread
From: Jan Beulich @ 2023-11-03  9:03 UTC (permalink / raw)
  To: bfd-cvs

https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=3aacf044eb976946bd985e0c5f2d638df40548af

commit 3aacf044eb976946bd985e0c5f2d638df40548af
Author: Jan Beulich <jbeulich@suse.com>
Date:   Fri Nov 3 10:02:27 2023 +0100

    RISC-V: add F- and D-extension testcases
    
    Make sure future changes won't regress any of this. Also cover the FLH
    and FSH macro insns of the Zfh extension.

Diff:
---
 gas/testsuite/gas/riscv/fp-d-insns-32.d | 128 +++++++++++++++++++++++++
 gas/testsuite/gas/riscv/fp-d-insns-32.s | 140 +++++++++++++++++++++++++++
 gas/testsuite/gas/riscv/fp-d-insns-64.d | 119 +++++++++++++++++++++++
 gas/testsuite/gas/riscv/fp-d-insns-64.s | 128 +++++++++++++++++++++++++
 gas/testsuite/gas/riscv/fp-f-insns-32.d | 145 ++++++++++++++++++++++++++++
 gas/testsuite/gas/riscv/fp-f-insns-32.s | 162 ++++++++++++++++++++++++++++++++
 gas/testsuite/gas/riscv/fp-f-insns-64.d | 131 ++++++++++++++++++++++++++
 gas/testsuite/gas/riscv/fp-f-insns-64.s | 144 ++++++++++++++++++++++++++++
 gas/testsuite/gas/riscv/fp-zfh-insns.d  |  12 +++
 gas/testsuite/gas/riscv/fp-zfh-insns.s  |   2 +
 10 files changed, 1111 insertions(+)

diff --git a/gas/testsuite/gas/riscv/fp-d-insns-32.d b/gas/testsuite/gas/riscv/fp-d-insns-32.d
new file mode 100644
index 00000000000..e361ac2479c
--- /dev/null
+++ b/gas/testsuite/gas/riscv/fp-d-insns-32.d
@@ -0,0 +1,128 @@
+#as: -march=rv32icd
+#name: D extension (32-bit)
+#objdump: -dwrMnumeric
+
+.*:[ 	]+file format .*
+
+
+Disassembly of section .text:
+
+0+ <D>:
+[ 	]+[0-9a-f]+:[ 	]+22002fd3[ 	]+fabs\.d[ 	]+f31,f0
+[ 	]+[0-9a-f]+:[ 	]+23ffa053[ 	]+fabs\.d[ 	]+f0,f31
+[ 	]+[0-9a-f]+:[ 	]+02007fd3[ 	]+fadd\.d[ 	]+f31,f0,f0
+[ 	]+[0-9a-f]+:[ 	]+020ff053[ 	]+fadd\.d[ 	]+f0,f31,f0
+[ 	]+[0-9a-f]+:[ 	]+03f07053[ 	]+fadd\.d[ 	]+f0,f0,f31
+[ 	]+[0-9a-f]+:[ 	]+02000053[ 	]+fadd\.d[ 	]+f0,f0,f0,rne
+[ 	]+[0-9a-f]+:[ 	]+02001053[ 	]+fadd\.d[ 	]+f0,f0,f0,rtz
+[ 	]+[0-9a-f]+:[ 	]+02002053[ 	]+fadd\.d[ 	]+f0,f0,f0,rdn
+[ 	]+[0-9a-f]+:[ 	]+02003053[ 	]+fadd\.d[ 	]+f0,f0,f0,rup
+[ 	]+[0-9a-f]+:[ 	]+02004053[ 	]+fadd\.d[ 	]+f0,f0,f0,rmm
+[ 	]+[0-9a-f]+:[ 	]+e2001fd3[ 	]+fclass\.d[ 	]+x31,f0
+[ 	]+[0-9a-f]+:[ 	]+e20f9053[ 	]+fclass\.d[ 	]+x0,f31
+[ 	]+[0-9a-f]+:[ 	]+42000fd3[ 	]+fcvt\.d\.s[ 	]+f31,f0
+[ 	]+[0-9a-f]+:[ 	]+420f8053[ 	]+fcvt\.d\.s[ 	]+f0,f31
+[ 	]+[0-9a-f]+:[ 	]+d2000053[ 	]+fcvt\.d\.w[ 	]+f0,x0
+[ 	]+[0-9a-f]+:[ 	]+d2100053[ 	]+fcvt\.d\.wu[ 	]+f0,x0
+[ 	]+[0-9a-f]+:[ 	]+40107fd3[ 	]+fcvt\.s\.d[ 	]+f31,f0
+[ 	]+[0-9a-f]+:[ 	]+401ff053[ 	]+fcvt\.s\.d[ 	]+f0,f31
+[ 	]+[0-9a-f]+:[ 	]+40100053[ 	]+fcvt\.s\.d[ 	]+f0,f0,rne
+[ 	]+[0-9a-f]+:[ 	]+c2007053[ 	]+fcvt\.w\.d[ 	]+x0,f0
+[ 	]+[0-9a-f]+:[ 	]+c2107053[ 	]+fcvt\.wu\.d[ 	]+x0,f0
+[ 	]+[0-9a-f]+:[ 	]+1a007fd3[ 	]+fdiv\.d[ 	]+f31,f0,f0
+[ 	]+[0-9a-f]+:[ 	]+1a0ff053[ 	]+fdiv\.d[ 	]+f0,f31,f0
+[ 	]+[0-9a-f]+:[ 	]+1bf07053[ 	]+fdiv\.d[ 	]+f0,f0,f31
+[ 	]+[0-9a-f]+:[ 	]+1a000053[ 	]+fdiv\.d[ 	]+f0,f0,f0,rne
+[ 	]+[0-9a-f]+:[ 	]+a2002fd3[ 	]+feq\.d[ 	]+x31,f0,f0
+[ 	]+[0-9a-f]+:[ 	]+a20fa053[ 	]+feq\.d[ 	]+x0,f31,f0
+[ 	]+[0-9a-f]+:[ 	]+a3f02053[ 	]+feq\.d[ 	]+x0,f0,f31
+[ 	]+[0-9a-f]+:[ 	]+a2000fd3[ 	]+fle\.d[ 	]+x31,f0,f0
+[ 	]+[0-9a-f]+:[ 	]+a3f00053[ 	]+fle\.d[ 	]+x0,f0,f31
+[ 	]+[0-9a-f]+:[ 	]+a20f8053[ 	]+fle\.d[ 	]+x0,f31,f0
+[ 	]+[0-9a-f]+:[ 	]+a2001fd3[ 	]+flt\.d[ 	]+x31,f0,f0
+[ 	]+[0-9a-f]+:[ 	]+a3f01053[ 	]+flt\.d[ 	]+x0,f0,f31
+[ 	]+[0-9a-f]+:[ 	]+a20f9053[ 	]+flt\.d[ 	]+x0,f31,f0
+[ 	]+[0-9a-f]+:[ 	]+00003f87[ 	]+fld[ 	]+f31,0\(x0\) # 0( <.*>)?
+[ 	]+[0-9a-f]+:[ 	]+7ff03007[ 	]+fld[ 	]+f0,2047\(x0\) # 7ff( <.*>)?
+[ 	]+[0-9a-f]+:[ 	]+80003007[ 	]+fld[ 	]+f0,-2048\(x0\) # fffff800( <.*>)?
+[ 	]+[0-9a-f]+:[ 	]+000fb007[ 	]+fld[ 	]+f0,0\(x31\)
+[ 	]+[0-9a-f]+:[ 	]+00000f97[ 	]+auipc[ 	]+x31,0x0[ 	]+[0-9a-f]+:[ 	]+R_RISCV_PCREL_HI20[ 	]+dval
+[ 	]+[0-9a-f]+:[ 	]+R_RISCV_RELAX.*
+[ 	]+[0-9a-f]+:[ 	]+000fb007[ 	]+fld[ 	]+f0,0\(x31\) # [0-9a-f]+( <.*>)?[ 	]+[0-9a-f]+:[ 	]+R_RISCV_PCREL_LO12_I[ 	]+.*
+[ 	]+[0-9a-f]+:[ 	]+R_RISCV_RELAX.*
+[ 	]+[0-9a-f]+:[ 	]+201c[ 	]+fld[ 	]+f15,0\(x8\)
+[ 	]+[0-9a-f]+:[ 	]+3c00[ 	]+fld[ 	]+f8,56\(x8\)
+[ 	]+[0-9a-f]+:[ 	]+2060[ 	]+fld[ 	]+f8,192\(x8\)
+[ 	]+[0-9a-f]+:[ 	]+2380[ 	]+fld[ 	]+f8,0\(x15\)
+[ 	]+[0-9a-f]+:[ 	]+2f82[ 	]+fld[ 	]+f31,0\(x2\)
+[ 	]+[0-9a-f]+:[ 	]+2062[ 	]+fld[ 	]+f0,24\(x2\)
+[ 	]+[0-9a-f]+:[ 	]+3002[ 	]+fld[ 	]+f0,32\(x2\)
+[ 	]+[0-9a-f]+:[ 	]+201e[ 	]+fld[ 	]+f0,448\(x2\)
+[ 	]+[0-9a-f]+:[ 	]+a2000fd3[ 	]+fle\.d[ 	]+x31,f0,f0
+[ 	]+[0-9a-f]+:[ 	]+a20f8053[ 	]+fle\.d[ 	]+x0,f31,f0
+[ 	]+[0-9a-f]+:[ 	]+a3f00053[ 	]+fle\.d[ 	]+x0,f0,f31
+[ 	]+[0-9a-f]+:[ 	]+a2001fd3[ 	]+flt\.d[ 	]+x31,f0,f0
+[ 	]+[0-9a-f]+:[ 	]+a20f9053[ 	]+flt\.d[ 	]+x0,f31,f0
+[ 	]+[0-9a-f]+:[ 	]+a3f01053[ 	]+flt\.d[ 	]+x0,f0,f31
+[ 	]+[0-9a-f]+:[ 	]+02007fc3[ 	]+fmadd\.d[ 	]+f31,f0,f0,f0
+[ 	]+[0-9a-f]+:[ 	]+020ff043[ 	]+fmadd\.d[ 	]+f0,f31,f0,f0
+[ 	]+[0-9a-f]+:[ 	]+03f07043[ 	]+fmadd\.d[ 	]+f0,f0,f31,f0
+[ 	]+[0-9a-f]+:[ 	]+fa007043[ 	]+fmadd\.d[ 	]+f0,f0,f0,f31
+[ 	]+[0-9a-f]+:[ 	]+02000043[ 	]+fmadd\.d[ 	]+f0,f0,f0,f0,rne
+[ 	]+[0-9a-f]+:[ 	]+2a001fd3[ 	]+fmax\.d[ 	]+f31,f0,f0
+[ 	]+[0-9a-f]+:[ 	]+2a0f9053[ 	]+fmax\.d[ 	]+f0,f31,f0
+[ 	]+[0-9a-f]+:[ 	]+2bf01053[ 	]+fmax\.d[ 	]+f0,f0,f31
+[ 	]+[0-9a-f]+:[ 	]+2a000fd3[ 	]+fmin\.d[ 	]+f31,f0,f0
+[ 	]+[0-9a-f]+:[ 	]+2a0f8053[ 	]+fmin\.d[ 	]+f0,f31,f0
+[ 	]+[0-9a-f]+:[ 	]+2bf00053[ 	]+fmin\.d[ 	]+f0,f0,f31
+[ 	]+[0-9a-f]+:[ 	]+02007fc7[ 	]+fmsub\.d[ 	]+f31,f0,f0,f0
+[ 	]+[0-9a-f]+:[ 	]+020ff047[ 	]+fmsub\.d[ 	]+f0,f31,f0,f0
+[ 	]+[0-9a-f]+:[ 	]+03f07047[ 	]+fmsub\.d[ 	]+f0,f0,f31,f0
+[ 	]+[0-9a-f]+:[ 	]+fa007047[ 	]+fmsub\.d[ 	]+f0,f0,f0,f31
+[ 	]+[0-9a-f]+:[ 	]+02000047[ 	]+fmsub\.d[ 	]+f0,f0,f0,f0,rne
+[ 	]+[0-9a-f]+:[ 	]+12007fd3[ 	]+fmul\.d[ 	]+f31,f0,f0
+[ 	]+[0-9a-f]+:[ 	]+120ff053[ 	]+fmul\.d[ 	]+f0,f31,f0
+[ 	]+[0-9a-f]+:[ 	]+13f07053[ 	]+fmul\.d[ 	]+f0,f0,f31
+[ 	]+[0-9a-f]+:[ 	]+12000053[ 	]+fmul\.d[ 	]+f0,f0,f0,rne
+[ 	]+[0-9a-f]+:[ 	]+22000fd3[ 	]+fmv\.d[ 	]+f31,f0
+[ 	]+[0-9a-f]+:[ 	]+23ff8053[ 	]+fmv\.d[ 	]+f0,f31
+[ 	]+[0-9a-f]+:[ 	]+22001fd3[ 	]+fneg\.d[ 	]+f31,f0
+[ 	]+[0-9a-f]+:[ 	]+23ff9053[ 	]+fneg\.d[ 	]+f0,f31
+[ 	]+[0-9a-f]+:[ 	]+02007fcf[ 	]+fnmadd\.d[ 	]+f31,f0,f0,f0
+[ 	]+[0-9a-f]+:[ 	]+020ff04f[ 	]+fnmadd\.d[ 	]+f0,f31,f0,f0
+[ 	]+[0-9a-f]+:[ 	]+03f0704f[ 	]+fnmadd\.d[ 	]+f0,f0,f31,f0
+[ 	]+[0-9a-f]+:[ 	]+fa00704f[ 	]+fnmadd\.d[ 	]+f0,f0,f0,f31
+[ 	]+[0-9a-f]+:[ 	]+0200004f[ 	]+fnmadd\.d[ 	]+f0,f0,f0,f0,rne
+[ 	]+[0-9a-f]+:[ 	]+02007fcb[ 	]+fnmsub\.d[ 	]+f31,f0,f0,f0
+[ 	]+[0-9a-f]+:[ 	]+020ff04b[ 	]+fnmsub\.d[ 	]+f0,f31,f0,f0
+[ 	]+[0-9a-f]+:[ 	]+03f0704b[ 	]+fnmsub\.d[ 	]+f0,f0,f31,f0
+[ 	]+[0-9a-f]+:[ 	]+fa00704b[ 	]+fnmsub\.d[ 	]+f0,f0,f0,f31
+[ 	]+[0-9a-f]+:[ 	]+0200004b[ 	]+fnmsub\.d[ 	]+f0,f0,f0,f0,rne
+[ 	]+[0-9a-f]+:[ 	]+01f03027[ 	]+fsd[ 	]+f31,0\(x0\) # 0( <.*>)?
+[ 	]+[0-9a-f]+:[ 	]+00003fa7[ 	]+fsd[ 	]+f0,31\(x0\) # 1f( <.*>)?
+[ 	]+[0-9a-f]+:[ 	]+fe003027[ 	]+fsd[ 	]+f0,-32\(x0\) # ffffffe0( <.*>)?
+[ 	]+[0-9a-f]+:[ 	]+000fb027[ 	]+fsd[ 	]+f0,0\(x31\)
+[ 	]+[0-9a-f]+:[ 	]+00000f97[ 	]+auipc[ 	]+x31,0x0[ 	]+[0-9a-f]+:[ 	]+R_RISCV_PCREL_HI20[ 	]+dval
+[ 	]+[0-9a-f]+:[ 	]+R_RISCV_RELAX.*
+[ 	]+[0-9a-f]+:[ 	]+000fb027[ 	]+fsd[ 	]+f0,0\(x31\) # [0-9a-f]+( <.*>)?[ 	]+[0-9a-f]+:[ 	]+R_RISCV_PCREL_LO12_S[ 	]+.*
+[ 	]+[0-9a-f]+:[ 	]+R_RISCV_RELAX.*
+[ 	]+[0-9a-f]+:[ 	]+a01c[ 	]+fsd[ 	]+f15,0\(x8\)
+[ 	]+[0-9a-f]+:[ 	]+bc00[ 	]+fsd[ 	]+f8,56\(x8\)
+[ 	]+[0-9a-f]+:[ 	]+a060[ 	]+fsd[ 	]+f8,192\(x8\)
+[ 	]+[0-9a-f]+:[ 	]+a380[ 	]+fsd[ 	]+f8,0\(x15\)
+[ 	]+[0-9a-f]+:[ 	]+a07e[ 	]+fsd[ 	]+f31,0\(x2\)
+[ 	]+[0-9a-f]+:[ 	]+ac02[ 	]+fsd[ 	]+f0,24\(x2\)
+[ 	]+[0-9a-f]+:[ 	]+b002[ 	]+fsd[ 	]+f0,32\(x2\)
+[ 	]+[0-9a-f]+:[ 	]+a382[ 	]+fsd[ 	]+f0,448\(x2\)
+[ 	]+[0-9a-f]+:[ 	]+22100fd3[ 	]+fsgnj\.d[ 	]+f31,f0,f1
+[ 	]+[0-9a-f]+:[ 	]+220f8053[ 	]+fsgnj\.d[ 	]+f0,f31,f0
+[ 	]+[0-9a-f]+:[ 	]+23f00053[ 	]+fsgnj\.d[ 	]+f0,f0,f31
+[ 	]+[0-9a-f]+:[ 	]+22009053[ 	]+fsgnjn\.d[ 	]+f0,f1,f0
+[ 	]+[0-9a-f]+:[ 	]+2200a053[ 	]+fsgnjx\.d[ 	]+f0,f1,f0
+[ 	]+[0-9a-f]+:[ 	]+5a007fd3[ 	]+fsqrt\.d[ 	]+f31,f0
+[ 	]+[0-9a-f]+:[ 	]+5a0ff053[ 	]+fsqrt\.d[ 	]+f0,f31
+[ 	]+[0-9a-f]+:[ 	]+5a000053[ 	]+fsqrt\.d[ 	]+f0,f0,rne
+[ 	]+[0-9a-f]+:[ 	]+0a007fd3[ 	]+fsub\.d[ 	]+f31,f0,f0
+[ 	]+[0-9a-f]+:[ 	]+0a0ff053[ 	]+fsub\.d[ 	]+f0,f31,f0
+[ 	]+[0-9a-f]+:[ 	]+0bf07053[ 	]+fsub\.d[ 	]+f0,f0,f31
+[ 	]+[0-9a-f]+:[ 	]+0a000053[ 	]+fsub\.d[ 	]+f0,f0,f0,rne
diff --git a/gas/testsuite/gas/riscv/fp-d-insns-32.s b/gas/testsuite/gas/riscv/fp-d-insns-32.s
new file mode 100644
index 00000000000..32b512e2c70
--- /dev/null
+++ b/gas/testsuite/gas/riscv/fp-d-insns-32.s
@@ -0,0 +1,140 @@
+D:
+	fabs.d	f31, f0
+	fabs.d	f0, f31
+
+	fadd.d	f31, f0, f0
+	fadd.d	f0, f31, f0
+	fadd.d	f0, f0, f31
+	fadd.d	f0, f0, f0, rne
+	fadd.d	f0, f0, f0, rtz
+	fadd.d	f0, f0, f0, rdn
+	fadd.d	f0, f0, f0, rup
+	fadd.d	f0, f0, f0, rmm
+
+	fclass.d x31, f0
+	fclass.d x0, f31
+
+	fcvt.d.s f31, f0
+	fcvt.d.s f0, f31
+	fcvt.d.w f0, x0
+	fcvt.d.wu f0, x0
+	fcvt.s.d f31, f0
+	fcvt.s.d f0, f31
+	fcvt.s.d f0, f0, rne
+	fcvt.w.d x0, f0
+	fcvt.wu.d x0, f0
+
+	fdiv.d	f31, f0, f0
+	fdiv.d	f0, f31, f0
+	fdiv.d	f0, f0, f31
+	fdiv.d	f0, f0, f0, rne
+
+	feq.d	x31, f0, f0
+	feq.d	x0, f31, f0
+	feq.d	x0, f0, f31
+
+	fge.d	x31, f0, f0
+	fge.d	x0, f31, f0
+	fge.d	x0, f0, f31
+
+	fgt.d	x31, f0, f0
+	fgt.d	x0, f31, f0
+	fgt.d	x0, f0, f31
+
+	fld	f31, (x0)
+	fld	f0, 0x7ff(x0)
+	fld	f0, -0x800(x0)
+	fld	f0, (x31)
+	fld	f0, dval, x31
+
+	fld	f15, (x8)
+	fld	f8, 0x38(x8)
+	fld	f8, 0xc0(x8)
+	fld	f8, (x15)
+
+	fld	f31, (sp)
+	fld	f0, 0x18(sp)
+	fld	f0, 0x20(sp)
+	fld	f0, 0x1c0(sp)
+
+	fle.d	x31, f0, f0
+	fle.d	x0, f31, f0
+	fle.d	x0, f0, f31
+
+	flt.d	x31, f0, f0
+	flt.d	x0, f31, f0
+	flt.d	x0, f0, f31
+
+	fmadd.d	f31, f0, f0, f0
+	fmadd.d	f0, f31, f0, f0
+	fmadd.d	f0, f0, f31, f0
+	fmadd.d	f0, f0, f0, f31
+	fmadd.d	f0, f0, f0, f0, rne
+
+	fmax.d	f31, f0, f0
+	fmax.d	f0, f31, f0
+	fmax.d	f0, f0, f31
+
+	fmin.d	f31, f0, f0
+	fmin.d	f0, f31, f0
+	fmin.d	f0, f0, f31
+
+	fmsub.d	f31, f0, f0, f0
+	fmsub.d	f0, f31, f0, f0
+	fmsub.d	f0, f0, f31, f0
+	fmsub.d	f0, f0, f0, f31
+	fmsub.d	f0, f0, f0, f0, rne
+
+	fmul.d	f31, f0, f0
+	fmul.d	f0, f31, f0
+	fmul.d	f0, f0, f31
+	fmul.d	f0, f0, f0, rne
+
+	fmv.d	f31, f0
+	fmv.d	f0, f31
+
+	fneg.d	f31, f0
+	fneg.d	f0, f31
+
+	fnmadd.d f31, f0, f0, f0
+	fnmadd.d f0, f31, f0, f0
+	fnmadd.d f0, f0, f31, f0
+	fnmadd.d f0, f0, f0, f31
+	fnmadd.d f0, f0, f0, f0, rne
+
+	fnmsub.d f31, f0, f0, f0
+	fnmsub.d f0, f31, f0, f0
+	fnmsub.d f0, f0, f31, f0
+	fnmsub.d f0, f0, f0, f31
+	fnmsub.d f0, f0, f0, f0, rne
+
+	fsd	f31, (x0)
+	fsd	f0, 0x1f(x0)
+	fsd	f0, -0x20(x0)
+	fsd	f0, (x31)
+	fsd	f0, dval, x31
+
+	fsd	f15, (x8)
+	fsd	f8, 0x38(x8)
+	fsd	f8, 0xc0(x8)
+	fsd	f8, (x15)
+
+	fsd	f31, (sp)
+	fsd	f0, 0x18(sp)
+	fsd	f0, 0x20(sp)
+	fsd	f0, 0x1c0(sp)
+
+	fsgnj.d	f31, f0, f1
+	fsgnj.d	f0, f31, f0
+	fsgnj.d	f0, f0, f31
+	fsgnjn.d f0, f1, f0
+	fsgnjx.d f0, f1, f0
+
+	fsqrt.d	f31, f0
+	fsqrt.d	f0, f31
+	fsqrt.d	f0, f0, rne
+
+	fsub.d	f31, f0, f0
+	fsub.d	f0, f31, f0
+	fsub.d	f0, f0, f31
+	fsub.d	f0, f0, f0, rne
diff --git a/gas/testsuite/gas/riscv/fp-d-insns-64.d b/gas/testsuite/gas/riscv/fp-d-insns-64.d
new file mode 100644
index 00000000000..1c744b4f234
--- /dev/null
+++ b/gas/testsuite/gas/riscv/fp-d-insns-64.d
@@ -0,0 +1,119 @@
+#as: -march=rv64id
+#name: D extension (64-bit)
+#objdump: -dwrMnumeric
+
+.*:[ 	]+file format .*
+
+
+Disassembly of section .text:
+
+0+ <D>:
+[ 	]+[0-9a-f]+:[ 	]+22002fd3[ 	]+fabs\.d[ 	]+f31,f0
+[ 	]+[0-9a-f]+:[ 	]+23ffa053[ 	]+fabs\.d[ 	]+f0,f31
+[ 	]+[0-9a-f]+:[ 	]+02007fd3[ 	]+fadd\.d[ 	]+f31,f0,f0
+[ 	]+[0-9a-f]+:[ 	]+020ff053[ 	]+fadd\.d[ 	]+f0,f31,f0
+[ 	]+[0-9a-f]+:[ 	]+03f07053[ 	]+fadd\.d[ 	]+f0,f0,f31
+[ 	]+[0-9a-f]+:[ 	]+02000053[ 	]+fadd\.d[ 	]+f0,f0,f0,rne
+[ 	]+[0-9a-f]+:[ 	]+02001053[ 	]+fadd\.d[ 	]+f0,f0,f0,rtz
+[ 	]+[0-9a-f]+:[ 	]+02002053[ 	]+fadd\.d[ 	]+f0,f0,f0,rdn
+[ 	]+[0-9a-f]+:[ 	]+02003053[ 	]+fadd\.d[ 	]+f0,f0,f0,rup
+[ 	]+[0-9a-f]+:[ 	]+02004053[ 	]+fadd\.d[ 	]+f0,f0,f0,rmm
+[ 	]+[0-9a-f]+:[ 	]+e2001fd3[ 	]+fclass\.d[ 	]+x31,f0
+[ 	]+[0-9a-f]+:[ 	]+e20f9053[ 	]+fclass\.d[ 	]+x0,f31
+[ 	]+[0-9a-f]+:[ 	]+d2207053[ 	]+fcvt\.d\.l[ 	]+f0,x0
+[ 	]+[0-9a-f]+:[ 	]+d2200053[ 	]+fcvt\.d\.l[ 	]+f0,x0,rne
+[ 	]+[0-9a-f]+:[ 	]+d2307053[ 	]+fcvt\.d\.lu[ 	]+f0,x0
+[ 	]+[0-9a-f]+:[ 	]+42000fd3[ 	]+fcvt\.d\.s[ 	]+f31,f0
+[ 	]+[0-9a-f]+:[ 	]+420f8053[ 	]+fcvt\.d\.s[ 	]+f0,f31
+[ 	]+[0-9a-f]+:[ 	]+d2000053[ 	]+fcvt\.d\.w[ 	]+f0,x0
+[ 	]+[0-9a-f]+:[ 	]+d2100053[ 	]+fcvt\.d\.wu[ 	]+f0,x0
+[ 	]+[0-9a-f]+:[ 	]+c2207053[ 	]+fcvt\.l\.d[ 	]+x0,f0
+[ 	]+[0-9a-f]+:[ 	]+c2307053[ 	]+fcvt\.lu\.d[ 	]+x0,f0
+[ 	]+[0-9a-f]+:[ 	]+40107fd3[ 	]+fcvt\.s\.d[ 	]+f31,f0
+[ 	]+[0-9a-f]+:[ 	]+401ff053[ 	]+fcvt\.s\.d[ 	]+f0,f31
+[ 	]+[0-9a-f]+:[ 	]+40100053[ 	]+fcvt\.s\.d[ 	]+f0,f0,rne
+[ 	]+[0-9a-f]+:[ 	]+c2007053[ 	]+fcvt\.w\.d[ 	]+x0,f0
+[ 	]+[0-9a-f]+:[ 	]+c2107053[ 	]+fcvt\.wu\.d[ 	]+x0,f0
+[ 	]+[0-9a-f]+:[ 	]+1a007fd3[ 	]+fdiv\.d[ 	]+f31,f0,f0
+[ 	]+[0-9a-f]+:[ 	]+1a0ff053[ 	]+fdiv\.d[ 	]+f0,f31,f0
+[ 	]+[0-9a-f]+:[ 	]+1bf07053[ 	]+fdiv\.d[ 	]+f0,f0,f31
+[ 	]+[0-9a-f]+:[ 	]+1a000053[ 	]+fdiv\.d[ 	]+f0,f0,f0,rne
+[ 	]+[0-9a-f]+:[ 	]+a2002fd3[ 	]+feq\.d[ 	]+x31,f0,f0
+[ 	]+[0-9a-f]+:[ 	]+a20fa053[ 	]+feq\.d[ 	]+x0,f31,f0
+[ 	]+[0-9a-f]+:[ 	]+a3f02053[ 	]+feq\.d[ 	]+x0,f0,f31
+[ 	]+[0-9a-f]+:[ 	]+a2000fd3[ 	]+fle\.d[ 	]+x31,f0,f0
+[ 	]+[0-9a-f]+:[ 	]+a3f00053[ 	]+fle\.d[ 	]+x0,f0,f31
+[ 	]+[0-9a-f]+:[ 	]+a20f8053[ 	]+fle\.d[ 	]+x0,f31,f0
+[ 	]+[0-9a-f]+:[ 	]+a2001fd3[ 	]+flt\.d[ 	]+x31,f0,f0
+[ 	]+[0-9a-f]+:[ 	]+a3f01053[ 	]+flt\.d[ 	]+x0,f0,f31
+[ 	]+[0-9a-f]+:[ 	]+a20f9053[ 	]+flt\.d[ 	]+x0,f31,f0
+[ 	]+[0-9a-f]+:[ 	]+00003f87[ 	]+fld[ 	]+f31,0\(x0\) # 0( <.*>)?
+[ 	]+[0-9a-f]+:[ 	]+7ff03007[ 	]+fld[ 	]+f0,2047\(x0\) # 7ff( <.*>)?
+[ 	]+[0-9a-f]+:[ 	]+80003007[ 	]+fld[ 	]+f0,-2048\(x0\) # f+800( <.*>)?
+[ 	]+[0-9a-f]+:[ 	]+000fb007[ 	]+fld[ 	]+f0,0\(x31\)
+[ 	]+[0-9a-f]+:[ 	]+00000f97[ 	]+auipc[ 	]+x31,0x0[ 	]+[0-9a-f]+:[ 	]+R_RISCV_PCREL_HI20[ 	]+dval
+[ 	]+[0-9a-f]+:[ 	]+R_RISCV_RELAX.*
+[ 	]+[0-9a-f]+:[ 	]+000fb007[ 	]+fld[ 	]+f0,0\(x31\) # [0-9a-f]+( <.*>)?[ 	]+[0-9a-f]+:[ 	]+R_RISCV_PCREL_LO12_I[ 	]+.*
+[ 	]+[0-9a-f]+:[ 	]+R_RISCV_RELAX.*
+[ 	]+[0-9a-f]+:[ 	]+a2000fd3[ 	]+fle\.d[ 	]+x31,f0,f0
+[ 	]+[0-9a-f]+:[ 	]+a20f8053[ 	]+fle\.d[ 	]+x0,f31,f0
+[ 	]+[0-9a-f]+:[ 	]+a3f00053[ 	]+fle\.d[ 	]+x0,f0,f31
+[ 	]+[0-9a-f]+:[ 	]+a2001fd3[ 	]+flt\.d[ 	]+x31,f0,f0
+[ 	]+[0-9a-f]+:[ 	]+a20f9053[ 	]+flt\.d[ 	]+x0,f31,f0
+[ 	]+[0-9a-f]+:[ 	]+a3f01053[ 	]+flt\.d[ 	]+x0,f0,f31
+[ 	]+[0-9a-f]+:[ 	]+02007fc3[ 	]+fmadd\.d[ 	]+f31,f0,f0,f0
+[ 	]+[0-9a-f]+:[ 	]+020ff043[ 	]+fmadd\.d[ 	]+f0,f31,f0,f0
+[ 	]+[0-9a-f]+:[ 	]+03f07043[ 	]+fmadd\.d[ 	]+f0,f0,f31,f0
+[ 	]+[0-9a-f]+:[ 	]+fa007043[ 	]+fmadd\.d[ 	]+f0,f0,f0,f31
+[ 	]+[0-9a-f]+:[ 	]+02000043[ 	]+fmadd\.d[ 	]+f0,f0,f0,f0,rne
+[ 	]+[0-9a-f]+:[ 	]+2a001fd3[ 	]+fmax\.d[ 	]+f31,f0,f0
+[ 	]+[0-9a-f]+:[ 	]+2a0f9053[ 	]+fmax\.d[ 	]+f0,f31,f0
+[ 	]+[0-9a-f]+:[ 	]+2bf01053[ 	]+fmax\.d[ 	]+f0,f0,f31
+[ 	]+[0-9a-f]+:[ 	]+2a000fd3[ 	]+fmin\.d[ 	]+f31,f0,f0
+[ 	]+[0-9a-f]+:[ 	]+2a0f8053[ 	]+fmin\.d[ 	]+f0,f31,f0
+[ 	]+[0-9a-f]+:[ 	]+2bf00053[ 	]+fmin\.d[ 	]+f0,f0,f31
+[ 	]+[0-9a-f]+:[ 	]+02007fc7[ 	]+fmsub\.d[ 	]+f31,f0,f0,f0
+[ 	]+[0-9a-f]+:[ 	]+020ff047[ 	]+fmsub\.d[ 	]+f0,f31,f0,f0
+[ 	]+[0-9a-f]+:[ 	]+03f07047[ 	]+fmsub\.d[ 	]+f0,f0,f31,f0
+[ 	]+[0-9a-f]+:[ 	]+fa007047[ 	]+fmsub\.d[ 	]+f0,f0,f0,f31
+[ 	]+[0-9a-f]+:[ 	]+02000047[ 	]+fmsub\.d[ 	]+f0,f0,f0,f0,rne
+[ 	]+[0-9a-f]+:[ 	]+12007fd3[ 	]+fmul\.d[ 	]+f31,f0,f0
+[ 	]+[0-9a-f]+:[ 	]+120ff053[ 	]+fmul\.d[ 	]+f0,f31,f0
+[ 	]+[0-9a-f]+:[ 	]+13f07053[ 	]+fmul\.d[ 	]+f0,f0,f31
+[ 	]+[0-9a-f]+:[ 	]+12000053[ 	]+fmul\.d[ 	]+f0,f0,f0,rne
+[ 	]+[0-9a-f]+:[ 	]+22000fd3[ 	]+fmv\.d[ 	]+f31,f0
+[ 	]+[0-9a-f]+:[ 	]+23ff8053[ 	]+fmv\.d[ 	]+f0,f31
+[ 	]+[0-9a-f]+:[ 	]+f2000053[ 	]+fmv\.d\.x[ 	]+f0,x0
+[ 	]+[0-9a-f]+:[ 	]+e2000053[ 	]+fmv\.x\.d[ 	]+x0,f0
+[ 	]+[0-9a-f]+:[ 	]+22001fd3[ 	]+fneg\.d[ 	]+f31,f0
+[ 	]+[0-9a-f]+:[ 	]+23ff9053[ 	]+fneg\.d[ 	]+f0,f31
+[ 	]+[0-9a-f]+:[ 	]+02007fcf[ 	]+fnmadd\.d[ 	]+f31,f0,f0,f0
+[ 	]+[0-9a-f]+:[ 	]+020ff04f[ 	]+fnmadd\.d[ 	]+f0,f31,f0,f0
+[ 	]+[0-9a-f]+:[ 	]+03f0704f[ 	]+fnmadd\.d[ 	]+f0,f0,f31,f0
+[ 	]+[0-9a-f]+:[ 	]+fa00704f[ 	]+fnmadd\.d[ 	]+f0,f0,f0,f31
+[ 	]+[0-9a-f]+:[ 	]+0200004f[ 	]+fnmadd\.d[ 	]+f0,f0,f0,f0,rne
+[ 	]+[0-9a-f]+:[ 	]+02007fcb[ 	]+fnmsub\.d[ 	]+f31,f0,f0,f0
+[ 	]+[0-9a-f]+:[ 	]+020ff04b[ 	]+fnmsub\.d[ 	]+f0,f31,f0,f0
+[ 	]+[0-9a-f]+:[ 	]+03f0704b[ 	]+fnmsub\.d[ 	]+f0,f0,f31,f0
+[ 	]+[0-9a-f]+:[ 	]+fa00704b[ 	]+fnmsub\.d[ 	]+f0,f0,f0,f31
+[ 	]+[0-9a-f]+:[ 	]+0200004b[ 	]+fnmsub\.d[ 	]+f0,f0,f0,f0,rne
+[ 	]+[0-9a-f]+:[ 	]+01f03027[ 	]+fsd[ 	]+f31,0\(x0\) # 0( <.*>)?
+[ 	]+[0-9a-f]+:[ 	]+00003fa7[ 	]+fsd[ 	]+f0,31\(x0\) # 1f( <.*>)?
+[ 	]+[0-9a-f]+:[ 	]+fe003027[ 	]+fsd[ 	]+f0,-32\(x0\) # f+e0( <.*>)?
+[ 	]+[0-9a-f]+:[ 	]+000fb027[ 	]+fsd[ 	]+f0,0\(x31\)
+[ 	]+[0-9a-f]+:[ 	]+00000f97[ 	]+auipc[ 	]+x31,0x0[ 	]+[0-9a-f]+:[ 	]+R_RISCV_PCREL_HI20[ 	]+dval
+[ 	]+[0-9a-f]+:[ 	]+R_RISCV_RELAX.*
+[ 	]+[0-9a-f]+:[ 	]+000fb027[ 	]+fsd[ 	]+f0,0\(x31\) # [0-9a-f]+( <.*>)?[ 	]+[0-9a-f]+:[ 	]+R_RISCV_PCREL_LO12_S[ 	]+.*
+[ 	]+[0-9a-f]+:[ 	]+R_RISCV_RELAX.*
+[ 	]+[0-9a-f]+:[ 	]+22100fd3[ 	]+fsgnj\.d[ 	]+f31,f0,f1
+[ 	]+[0-9a-f]+:[ 	]+220f8053[ 	]+fsgnj\.d[ 	]+f0,f31,f0
+[ 	]+[0-9a-f]+:[ 	]+23f00053[ 	]+fsgnj\.d[ 	]+f0,f0,f31
+[ 	]+[0-9a-f]+:[ 	]+22009053[ 	]+fsgnjn\.d[ 	]+f0,f1,f0
+[ 	]+[0-9a-f]+:[ 	]+2200a053[ 	]+fsgnjx\.d[ 	]+f0,f1,f0
+[ 	]+[0-9a-f]+:[ 	]+5a007fd3[ 	]+fsqrt\.d[ 	]+f31,f0
+[ 	]+[0-9a-f]+:[ 	]+5a0ff053[ 	]+fsqrt\.d[ 	]+f0,f31
+[ 	]+[0-9a-f]+:[ 	]+5a000053[ 	]+fsqrt\.d[ 	]+f0,f0,rne
+[ 	]+[0-9a-f]+:[ 	]+0a007fd3[ 	]+fsub\.d[ 	]+f31,f0,f0
+[ 	]+[0-9a-f]+:[ 	]+0a0ff053[ 	]+fsub\.d[ 	]+f0,f31,f0
+[ 	]+[0-9a-f]+:[ 	]+0bf07053[ 	]+fsub\.d[ 	]+f0,f0,f31
+[ 	]+[0-9a-f]+:[ 	]+0a000053[ 	]+fsub\.d[ 	]+f0,f0,f0,rne
diff --git a/gas/testsuite/gas/riscv/fp-d-insns-64.s b/gas/testsuite/gas/riscv/fp-d-insns-64.s
new file mode 100644
index 00000000000..3d7e39af016
--- /dev/null
+++ b/gas/testsuite/gas/riscv/fp-d-insns-64.s
@@ -0,0 +1,128 @@
+D:
+	fabs.d	f31, f0
+	fabs.d	f0, f31
+
+	fadd.d	f31, f0, f0
+	fadd.d	f0, f31, f0
+	fadd.d	f0, f0, f31
+	fadd.d	f0, f0, f0, rne
+	fadd.d	f0, f0, f0, rtz
+	fadd.d	f0, f0, f0, rdn
+	fadd.d	f0, f0, f0, rup
+	fadd.d	f0, f0, f0, rmm
+
+	fclass.d x31, f0
+	fclass.d x0, f31
+
+	fcvt.d.l f0, x0
+	fcvt.d.l f0, x0, rne
+	fcvt.d.lu f0, x0
+	fcvt.d.s f31, f0
+	fcvt.d.s f0, f31
+	fcvt.d.w f0, x0
+	fcvt.d.wu f0, x0
+	fcvt.l.d x0, f0
+	fcvt.lu.d x0, f0
+	fcvt.s.d f31, f0
+	fcvt.s.d f0, f31
+	fcvt.s.d f0, f0, rne
+	fcvt.w.d x0, f0
+	fcvt.wu.d x0, f0
+
+	fdiv.d	f31, f0, f0
+	fdiv.d	f0, f31, f0
+	fdiv.d	f0, f0, f31
+	fdiv.d	f0, f0, f0, rne
+
+	feq.d	x31, f0, f0
+	feq.d	x0, f31, f0
+	feq.d	x0, f0, f31
+
+	fge.d	x31, f0, f0
+	fge.d	x0, f31, f0
+	fge.d	x0, f0, f31
+
+	fgt.d	x31, f0, f0
+	fgt.d	x0, f31, f0
+	fgt.d	x0, f0, f31
+
+	fld	f31, (x0)
+	fld	f0, 0x7ff(x0)
+	fld	f0, -0x800(x0)
+	fld	f0, (x31)
+	fld	f0, dval, x31
+
+	fle.d	x31, f0, f0
+	fle.d	x0, f31, f0
+	fle.d	x0, f0, f31
+
+	flt.d	x31, f0, f0
+	flt.d	x0, f31, f0
+	flt.d	x0, f0, f31
+
+	fmadd.d	f31, f0, f0, f0
+	fmadd.d	f0, f31, f0, f0
+	fmadd.d	f0, f0, f31, f0
+	fmadd.d	f0, f0, f0, f31
+	fmadd.d	f0, f0, f0, f0, rne
+
+	fmax.d	f31, f0, f0
+	fmax.d	f0, f31, f0
+	fmax.d	f0, f0, f31
+
+	fmin.d	f31, f0, f0
+	fmin.d	f0, f31, f0
+	fmin.d	f0, f0, f31
+
+	fmsub.d	f31, f0, f0, f0
+	fmsub.d	f0, f31, f0, f0
+	fmsub.d	f0, f0, f31, f0
+	fmsub.d	f0, f0, f0, f31
+	fmsub.d	f0, f0, f0, f0, rne
+
+	fmul.d	f31, f0, f0
+	fmul.d	f0, f31, f0
+	fmul.d	f0, f0, f31
+	fmul.d	f0, f0, f0, rne
+
+	fmv.d	f31, f0
+	fmv.d	f0, f31
+
+	fmv.d.x	f0, x0
+	fmv.x.d	x0, f0
+
+	fneg.d	f31, f0
+	fneg.d	f0, f31
+
+	fnmadd.d f31, f0, f0, f0
+	fnmadd.d f0, f31, f0, f0
+	fnmadd.d f0, f0, f31, f0
+	fnmadd.d f0, f0, f0, f31
+	fnmadd.d f0, f0, f0, f0, rne
+
+	fnmsub.d f31, f0, f0, f0
+	fnmsub.d f0, f31, f0, f0
+	fnmsub.d f0, f0, f31, f0
+	fnmsub.d f0, f0, f0, f31
+	fnmsub.d f0, f0, f0, f0, rne
+
+	fsd	f31, (x0)
+	fsd	f0, 0x1f(x0)
+	fsd	f0, -0x20(x0)
+	fsd	f0, (x31)
+	fsd	f0, dval, x31
+
+	fsgnj.d	f31, f0, f1
+	fsgnj.d	f0, f31, f0
+	fsgnj.d	f0, f0, f31
+	fsgnjn.d f0, f1, f0
+	fsgnjx.d f0, f1, f0
+
+	fsqrt.d	f31, f0
+	fsqrt.d	f0, f31
+	fsqrt.d	f0, f0, rne
+
+	fsub.d	f31, f0, f0
+	fsub.d	f0, f31, f0
+	fsub.d	f0, f0, f31
+	fsub.d	f0, f0, f0, rne
diff --git a/gas/testsuite/gas/riscv/fp-f-insns-32.d b/gas/testsuite/gas/riscv/fp-f-insns-32.d
new file mode 100644
index 00000000000..406da37ad05
--- /dev/null
+++ b/gas/testsuite/gas/riscv/fp-f-insns-32.d
@@ -0,0 +1,145 @@
+#as: -march=rv32icf
+#name: F extension (32-bit)
+#objdump: -dwrMnumeric
+
+.*:[ 	]+file format .*
+
+
+Disassembly of section .text:
+
+0+ <F>:
+[ 	]+[0-9a-f]+:[ 	]+20002fd3[ 	]+fabs\.s[ 	]+f31,f0
+[ 	]+[0-9a-f]+:[ 	]+21ffa053[ 	]+fabs\.s[ 	]+f0,f31
+[ 	]+[0-9a-f]+:[ 	]+00007fd3[ 	]+fadd\.s[ 	]+f31,f0,f0
+[ 	]+[0-9a-f]+:[ 	]+000ff053[ 	]+fadd\.s[ 	]+f0,f31,f0
+[ 	]+[0-9a-f]+:[ 	]+01f07053[ 	]+fadd\.s[ 	]+f0,f0,f31
+[ 	]+[0-9a-f]+:[ 	]+00000053[ 	]+fadd\.s[ 	]+f0,f0,f0,rne
+[ 	]+[0-9a-f]+:[ 	]+00001053[ 	]+fadd\.s[ 	]+f0,f0,f0,rtz
+[ 	]+[0-9a-f]+:[ 	]+00002053[ 	]+fadd\.s[ 	]+f0,f0,f0,rdn
+[ 	]+[0-9a-f]+:[ 	]+00003053[ 	]+fadd\.s[ 	]+f0,f0,f0,rup
+[ 	]+[0-9a-f]+:[ 	]+00004053[ 	]+fadd\.s[ 	]+f0,f0,f0,rmm
+[ 	]+[0-9a-f]+:[ 	]+e0001fd3[ 	]+fclass\.s[ 	]+x31,f0
+[ 	]+[0-9a-f]+:[ 	]+e00f9053[ 	]+fclass\.s[ 	]+x0,f31
+[ 	]+[0-9a-f]+:[ 	]+d0007fd3[ 	]+fcvt\.s\.w[ 	]+f31,x0
+[ 	]+[0-9a-f]+:[ 	]+d00ff053[ 	]+fcvt\.s\.w[ 	]+f0,x31
+[ 	]+[0-9a-f]+:[ 	]+d0000053[ 	]+fcvt\.s\.w[ 	]+f0,x0,rne
+[ 	]+[0-9a-f]+:[ 	]+d0107053[ 	]+fcvt\.s\.wu[ 	]+f0,x0
+[ 	]+[0-9a-f]+:[ 	]+c0007fd3[ 	]+fcvt\.w\.s[ 	]+x31,f0
+[ 	]+[0-9a-f]+:[ 	]+c00ff053[ 	]+fcvt\.w\.s[ 	]+x0,f31
+[ 	]+[0-9a-f]+:[ 	]+c0000053[ 	]+fcvt\.w\.s[ 	]+x0,f0,rne
+[ 	]+[0-9a-f]+:[ 	]+c0107053[ 	]+fcvt\.wu\.s[ 	]+x0,f0
+[ 	]+[0-9a-f]+:[ 	]+18007fd3[ 	]+fdiv\.s[ 	]+f31,f0,f0
+[ 	]+[0-9a-f]+:[ 	]+180ff053[ 	]+fdiv\.s[ 	]+f0,f31,f0
+[ 	]+[0-9a-f]+:[ 	]+19f07053[ 	]+fdiv\.s[ 	]+f0,f0,f31
+[ 	]+[0-9a-f]+:[ 	]+18000053[ 	]+fdiv\.s[ 	]+f0,f0,f0,rne
+[ 	]+[0-9a-f]+:[ 	]+a0002fd3[ 	]+feq\.s[ 	]+x31,f0,f0
+[ 	]+[0-9a-f]+:[ 	]+a00fa053[ 	]+feq\.s[ 	]+x0,f31,f0
+[ 	]+[0-9a-f]+:[ 	]+a1f02053[ 	]+feq\.s[ 	]+x0,f0,f31
+[ 	]+[0-9a-f]+:[ 	]+a0000fd3[ 	]+fle\.s[ 	]+x31,f0,f0
+[ 	]+[0-9a-f]+:[ 	]+a1f00053[ 	]+fle\.s[ 	]+x0,f0,f31
+[ 	]+[0-9a-f]+:[ 	]+a00f8053[ 	]+fle\.s[ 	]+x0,f31,f0
+[ 	]+[0-9a-f]+:[ 	]+a0001fd3[ 	]+flt\.s[ 	]+x31,f0,f0
+[ 	]+[0-9a-f]+:[ 	]+a1f01053[ 	]+flt\.s[ 	]+x0,f0,f31
+[ 	]+[0-9a-f]+:[ 	]+a00f9053[ 	]+flt\.s[ 	]+x0,f31,f0
+[ 	]+[0-9a-f]+:[ 	]+a0000fd3[ 	]+fle\.s[ 	]+x31,f0,f0
+[ 	]+[0-9a-f]+:[ 	]+a00f8053[ 	]+fle\.s[ 	]+x0,f31,f0
+[ 	]+[0-9a-f]+:[ 	]+a1f00053[ 	]+fle\.s[ 	]+x0,f0,f31
+[ 	]+[0-9a-f]+:[ 	]+a0001fd3[ 	]+flt\.s[ 	]+x31,f0,f0
+[ 	]+[0-9a-f]+:[ 	]+a00f9053[ 	]+flt\.s[ 	]+x0,f31,f0
+[ 	]+[0-9a-f]+:[ 	]+a1f01053[ 	]+flt\.s[ 	]+x0,f0,f31
+[ 	]+[0-9a-f]+:[ 	]+00002f87[ 	]+flw[ 	]+f31,0\(x0\) # 0( <.*>)?
+[ 	]+[0-9a-f]+:[ 	]+7ff02007[ 	]+flw[ 	]+f0,2047\(x0\) # 7ff( <.*>)?
+[ 	]+[0-9a-f]+:[ 	]+80002007[ 	]+flw[ 	]+f0,-2048\(x0\) # fffff800( <.*>)?
+[ 	]+[0-9a-f]+:[ 	]+000fa007[ 	]+flw[ 	]+f0,0\(x31\)
+[ 	]+[0-9a-f]+:[ 	]+00000f97[ 	]+auipc[ 	]+x31,0x0[ 	]+[0-9a-f]+:[ 	]+R_RISCV_PCREL_HI20[ 	]+sval
+[ 	]+[0-9a-f]+:[ 	]+R_RISCV_RELAX.*
+[ 	]+[0-9a-f]+:[ 	]+000fa007[ 	]+flw[ 	]+f0,0\(x31\) # [0-9a-f]+( <.*>)?[ 	]+[0-9a-f]+:[ 	]+R_RISCV_PCREL_LO12_I[ 	]+.*
+[ 	]+[0-9a-f]+:[ 	]+R_RISCV_RELAX.*
+[ 	]+[0-9a-f]+:[ 	]+601c[ 	]+flw[ 	]+f15,0\(x8\)
+[ 	]+[0-9a-f]+:[ 	]+6040[ 	]+flw[ 	]+f8,4\(x8\)
+[ 	]+[0-9a-f]+:[ 	]+7c00[ 	]+flw[ 	]+f8,56\(x8\)
+[ 	]+[0-9a-f]+:[ 	]+6020[ 	]+flw[ 	]+f8,64\(x8\)
+[ 	]+[0-9a-f]+:[ 	]+6380[ 	]+flw[ 	]+f8,0\(x15\)
+[ 	]+[0-9a-f]+:[ 	]+6f82[ 	]+flw[ 	]+f31,0\(x2\)
+[ 	]+[0-9a-f]+:[ 	]+6072[ 	]+flw[ 	]+f0,28\(x2\)
+[ 	]+[0-9a-f]+:[ 	]+7002[ 	]+flw[ 	]+f0,32\(x2\)
+[ 	]+[0-9a-f]+:[ 	]+600e[ 	]+flw[ 	]+f0,192\(x2\)
+[ 	]+[0-9a-f]+:[ 	]+00007fc3[ 	]+fmadd\.s[ 	]+f31,f0,f0,f0
+[ 	]+[0-9a-f]+:[ 	]+000ff043[ 	]+fmadd\.s[ 	]+f0,f31,f0,f0
+[ 	]+[0-9a-f]+:[ 	]+01f07043[ 	]+fmadd\.s[ 	]+f0,f0,f31,f0
+[ 	]+[0-9a-f]+:[ 	]+f8007043[ 	]+fmadd\.s[ 	]+f0,f0,f0,f31
+[ 	]+[0-9a-f]+:[ 	]+00000043[ 	]+fmadd\.s[ 	]+f0,f0,f0,f0,rne
+[ 	]+[0-9a-f]+:[ 	]+28001fd3[ 	]+fmax\.s[ 	]+f31,f0,f0
+[ 	]+[0-9a-f]+:[ 	]+280f9053[ 	]+fmax\.s[ 	]+f0,f31,f0
+[ 	]+[0-9a-f]+:[ 	]+29f01053[ 	]+fmax\.s[ 	]+f0,f0,f31
+[ 	]+[0-9a-f]+:[ 	]+28000fd3[ 	]+fmin\.s[ 	]+f31,f0,f0
+[ 	]+[0-9a-f]+:[ 	]+280f8053[ 	]+fmin\.s[ 	]+f0,f31,f0
+[ 	]+[0-9a-f]+:[ 	]+29f00053[ 	]+fmin\.s[ 	]+f0,f0,f31
+[ 	]+[0-9a-f]+:[ 	]+00007fc7[ 	]+fmsub\.s[ 	]+f31,f0,f0,f0
+[ 	]+[0-9a-f]+:[ 	]+000ff047[ 	]+fmsub\.s[ 	]+f0,f31,f0,f0
+[ 	]+[0-9a-f]+:[ 	]+01f07047[ 	]+fmsub\.s[ 	]+f0,f0,f31,f0
+[ 	]+[0-9a-f]+:[ 	]+f8007047[ 	]+fmsub\.s[ 	]+f0,f0,f0,f31
+[ 	]+[0-9a-f]+:[ 	]+00000047[ 	]+fmsub\.s[ 	]+f0,f0,f0,f0,rne
+[ 	]+[0-9a-f]+:[ 	]+10007fd3[ 	]+fmul\.s[ 	]+f31,f0,f0
+[ 	]+[0-9a-f]+:[ 	]+100ff053[ 	]+fmul\.s[ 	]+f0,f31,f0
+[ 	]+[0-9a-f]+:[ 	]+11f07053[ 	]+fmul\.s[ 	]+f0,f0,f31
+[ 	]+[0-9a-f]+:[ 	]+10000053[ 	]+fmul\.s[ 	]+f0,f0,f0,rne
+[ 	]+[0-9a-f]+:[ 	]+20000fd3[ 	]+fmv\.s[ 	]+f31,f0
+[ 	]+[0-9a-f]+:[ 	]+21ff8053[ 	]+fmv\.s[ 	]+f0,f31
+[ 	]+[0-9a-f]+:[ 	]+f0000fd3[ 	]+fmv\.w\.x[ 	]+f31,x0
+[ 	]+[0-9a-f]+:[ 	]+f00f8053[ 	]+fmv\.w\.x[ 	]+f0,x31
+[ 	]+[0-9a-f]+:[ 	]+e0000fd3[ 	]+fmv\.x\.w[ 	]+x31,f0
+[ 	]+[0-9a-f]+:[ 	]+e00f8053[ 	]+fmv\.x\.w[ 	]+x0,f31
+[ 	]+[0-9a-f]+:[ 	]+20001fd3[ 	]+fneg\.s[ 	]+f31,f0
+[ 	]+[0-9a-f]+:[ 	]+21ff9053[ 	]+fneg\.s[ 	]+f0,f31
+[ 	]+[0-9a-f]+:[ 	]+00007fcf[ 	]+fnmadd\.s[ 	]+f31,f0,f0,f0
+[ 	]+[0-9a-f]+:[ 	]+000ff04f[ 	]+fnmadd\.s[ 	]+f0,f31,f0,f0
+[ 	]+[0-9a-f]+:[ 	]+01f0704f[ 	]+fnmadd\.s[ 	]+f0,f0,f31,f0
+[ 	]+[0-9a-f]+:[ 	]+f800704f[ 	]+fnmadd\.s[ 	]+f0,f0,f0,f31
+[ 	]+[0-9a-f]+:[ 	]+0000004f[ 	]+fnmadd\.s[ 	]+f0,f0,f0,f0,rne
+[ 	]+[0-9a-f]+:[ 	]+00007fcb[ 	]+fnmsub\.s[ 	]+f31,f0,f0,f0
+[ 	]+[0-9a-f]+:[ 	]+000ff04b[ 	]+fnmsub\.s[ 	]+f0,f31,f0,f0
+[ 	]+[0-9a-f]+:[ 	]+01f0704b[ 	]+fnmsub\.s[ 	]+f0,f0,f31,f0
+[ 	]+[0-9a-f]+:[ 	]+f800704b[ 	]+fnmsub\.s[ 	]+f0,f0,f0,f31
+[ 	]+[0-9a-f]+:[ 	]+0000004b[ 	]+fnmsub\.s[ 	]+f0,f0,f0,f0,rne
+[ 	]+[0-9a-f]+:[ 	]+00302ff3[ 	]+frcsr[ 	]+x31
+[ 	]+[0-9a-f]+:[ 	]+00102ff3[ 	]+frflags[ 	]+x31
+[ 	]+[0-9a-f]+:[ 	]+00202ff3[ 	]+frrm[ 	]+x31
+[ 	]+[0-9a-f]+:[ 	]+003f9073[ 	]+fscsr[ 	]+x31
+[ 	]+[0-9a-f]+:[ 	]+00309ff3[ 	]+fscsr[ 	]+x31,x1
+[ 	]+[0-9a-f]+:[ 	]+003f90f3[ 	]+fscsr[ 	]+x1,x31
+[ 	]+[0-9a-f]+:[ 	]+001f9073[ 	]+fsflags[ 	]+x31
+[ 	]+[0-9a-f]+:[ 	]+00109ff3[ 	]+fsflags[ 	]+x31,x1
+[ 	]+[0-9a-f]+:[ 	]+001f90f3[ 	]+fsflags[ 	]+x1,x31
+[ 	]+[0-9a-f]+:[ 	]+20100fd3[ 	]+fsgnj\.s[ 	]+f31,f0,f1
+[ 	]+[0-9a-f]+:[ 	]+200f8053[ 	]+fsgnj\.s[ 	]+f0,f31,f0
+[ 	]+[0-9a-f]+:[ 	]+21f00053[ 	]+fsgnj\.s[ 	]+f0,f0,f31
+[ 	]+[0-9a-f]+:[ 	]+20009053[ 	]+fsgnjn\.s[ 	]+f0,f1,f0
+[ 	]+[0-9a-f]+:[ 	]+2000a053[ 	]+fsgnjx\.s[ 	]+f0,f1,f0
+[ 	]+[0-9a-f]+:[ 	]+58007fd3[ 	]+fsqrt\.s[ 	]+f31,f0
+[ 	]+[0-9a-f]+:[ 	]+580ff053[ 	]+fsqrt\.s[ 	]+f0,f31
+[ 	]+[0-9a-f]+:[ 	]+58000053[ 	]+fsqrt\.s[ 	]+f0,f0,rne
+[ 	]+[0-9a-f]+:[ 	]+002f9073[ 	]+fsrm[ 	]+x31
+[ 	]+[0-9a-f]+:[ 	]+00209ff3[ 	]+fsrm[ 	]+x31,x1
+[ 	]+[0-9a-f]+:[ 	]+002f90f3[ 	]+fsrm[ 	]+x1,x31
+[ 	]+[0-9a-f]+:[ 	]+08007fd3[ 	]+fsub\.s[ 	]+f31,f0,f0
+[ 	]+[0-9a-f]+:[ 	]+080ff053[ 	]+fsub\.s[ 	]+f0,f31,f0
+[ 	]+[0-9a-f]+:[ 	]+09f07053[ 	]+fsub\.s[ 	]+f0,f0,f31
+[ 	]+[0-9a-f]+:[ 	]+08000053[ 	]+fsub\.s[ 	]+f0,f0,f0,rne
+[ 	]+[0-9a-f]+:[ 	]+01f02027[ 	]+fsw[ 	]+f31,0\(x0\) # 0( <.*>)?
+[ 	]+[0-9a-f]+:[ 	]+00002fa7[ 	]+fsw[ 	]+f0,31\(x0\) # 1f( <.*>)?
+[ 	]+[0-9a-f]+:[ 	]+fe002027[ 	]+fsw[ 	]+f0,-32\(x0\) # ffffffe0( <.*>)?
+[ 	]+[0-9a-f]+:[ 	]+000fa027[ 	]+fsw[ 	]+f0,0\(x31\)
+[ 	]+[0-9a-f]+:[ 	]+00000f97[ 	]+auipc[ 	]+x31,0x0[ 	]+[0-9a-f]+:[ 	]+R_RISCV_PCREL_HI20[ 	]+sval
+[ 	]+[0-9a-f]+:[ 	]+R_RISCV_RELAX.*
+[ 	]+[0-9a-f]+:[ 	]+000fa027[ 	]+fsw[ 	]+f0,0\(x31\) # [0-9a-f]+( <.*>)?[ 	]+[0-9a-f]+:[ 	]+R_RISCV_PCREL_LO12_S[ 	]+.*
+[ 	]+[0-9a-f]+:[ 	]+R_RISCV_RELAX.*
+[ 	]+[0-9a-f]+:[ 	]+e01c[ 	]+fsw[ 	]+f15,0\(x8\)
+[ 	]+[0-9a-f]+:[ 	]+e040[ 	]+fsw[ 	]+f8,4\(x8\)
+[ 	]+[0-9a-f]+:[ 	]+fc00[ 	]+fsw[ 	]+f8,56\(x8\)
+[ 	]+[0-9a-f]+:[ 	]+e020[ 	]+fsw[ 	]+f8,64\(x8\)
+[ 	]+[0-9a-f]+:[ 	]+e380[ 	]+fsw[ 	]+f8,0\(x15\)
+[ 	]+[0-9a-f]+:[ 	]+e07e[ 	]+fsw[ 	]+f31,0\(x2\)
+[ 	]+[0-9a-f]+:[ 	]+ee02[ 	]+fsw[ 	]+f0,28\(x2\)
+[ 	]+[0-9a-f]+:[ 	]+f002[ 	]+fsw[ 	]+f0,32\(x2\)
+[ 	]+[0-9a-f]+:[ 	]+e182[ 	]+fsw[ 	]+f0,192\(x2\)
diff --git a/gas/testsuite/gas/riscv/fp-f-insns-32.s b/gas/testsuite/gas/riscv/fp-f-insns-32.s
new file mode 100644
index 00000000000..40483babe43
--- /dev/null
+++ b/gas/testsuite/gas/riscv/fp-f-insns-32.s
@@ -0,0 +1,162 @@
+F:
+	fabs.s	f31, f0
+	fabs.s	f0, f31
+
+	fadd.s	f31, f0, f0
+	fadd.s	f0, f31, f0
+	fadd.s	f0, f0, f31
+	fadd.s	f0, f0, f0, rne
+	fadd.s	f0, f0, f0, rtz
+	fadd.s	f0, f0, f0, rdn
+	fadd.s	f0, f0, f0, rup
+	fadd.s	f0, f0, f0, rmm
+
+	fclass.s x31, f0
+	fclass.s x0, f31
+
+	fcvt.s.w f31, x0
+	fcvt.s.w f0, x31
+	fcvt.s.w f0, x0, rne
+	fcvt.s.wu f0, x0
+	fcvt.w.s x31, f0
+	fcvt.w.s x0, f31
+	fcvt.w.s x0, f0, rne
+	fcvt.wu.s x0, f0
+
+	fdiv.s	f31, f0, f0
+	fdiv.s	f0, f31, f0
+	fdiv.s	f0, f0, f31
+	fdiv.s	f0, f0, f0, rne
+
+	feq.s	x31, f0, f0
+	feq.s	x0, f31, f0
+	feq.s	x0, f0, f31
+
+	fge.s	x31, f0, f0
+	fge.s	x0, f31, f0
+	fge.s	x0, f0, f31
+
+	fgt.s	x31, f0, f0
+	fgt.s	x0, f31, f0
+	fgt.s	x0, f0, f31
+
+	fle.s	x31, f0, f0
+	fle.s	x0, f31, f0
+	fle.s	x0, f0, f31
+
+	flt.s	x31, f0, f0
+	flt.s	x0, f31, f0
+	flt.s	x0, f0, f31
+
+	flw	f31, (x0)
+	flw	f0, 0x7ff(x0)
+	flw	f0, -0x800(x0)
+	flw	f0, (x31)
+	flw	f0, sval, x31
+
+	flw	f15, (x8)
+	flw	f8, 4(x8)
+	flw	f8, 0x38(x8)
+	flw	f8, 0x40(x8)
+	flw	f8, (x15)
+
+	flw	f31, (sp)
+	flw	f0, 0x1c(sp)
+	flw	f0, 0x20(sp)
+	flw	f0, 0xc0(sp)
+
+	fmadd.s	f31, f0, f0, f0
+	fmadd.s	f0, f31, f0, f0
+	fmadd.s	f0, f0, f31, f0
+	fmadd.s	f0, f0, f0, f31
+	fmadd.s	f0, f0, f0, f0, rne
+
+	fmax.s	f31, f0, f0
+	fmax.s	f0, f31, f0
+	fmax.s	f0, f0, f31
+
+	fmin.s	f31, f0, f0
+	fmin.s	f0, f31, f0
+	fmin.s	f0, f0, f31
+
+	fmsub.s	f31, f0, f0, f0
+	fmsub.s	f0, f31, f0, f0
+	fmsub.s	f0, f0, f31, f0
+	fmsub.s	f0, f0, f0, f31
+	fmsub.s	f0, f0, f0, f0, rne
+
+	fmul.s	f31, f0, f0
+	fmul.s	f0, f31, f0
+	fmul.s	f0, f0, f31
+	fmul.s	f0, f0, f0, rne
+
+	fmv.s	f31, f0
+	fmv.s	f0, f31
+
+	fmv.s.x	f31, x0
+	fmv.s.x	f0, x31
+	fmv.x.s	x31, f0
+	fmv.x.s	x0, f31
+
+	fneg.s	f31, f0
+	fneg.s	f0, f31
+
+	fnmadd.s f31, f0, f0, f0
+	fnmadd.s f0, f31, f0, f0
+	fnmadd.s f0, f0, f31, f0
+	fnmadd.s f0, f0, f0, f31
+	fnmadd.s f0, f0, f0, f0, rne
+
+	fnmsub.s f31, f0, f0, f0
+	fnmsub.s f0, f31, f0, f0
+	fnmsub.s f0, f0, f31, f0
+	fnmsub.s f0, f0, f0, f31
+	fnmsub.s f0, f0, f0, f0, rne
+
+	frcsr	x31
+	frflags	x31
+	frrm	x31
+
+	fscsr	x31
+	fscsr	x31, x1
+	fscsr	x1, x31
+
+	fsflags	x31
+	fsflags	x31, x1
+	fsflags	x1, x31
+
+	fsgnj.s	f31, f0, f1
+	fsgnj.s	f0, f31, f0
+	fsgnj.s	f0, f0, f31
+	fsgnjn.s f0, f1, f0
+	fsgnjx.s f0, f1, f0
+
+	fsqrt.s	f31, f0
+	fsqrt.s	f0, f31
+	fsqrt.s	f0, f0, rne
+
+	fsrm	x31
+	fsrm	x31, x1
+	fsrm	x1, x31
+
+	fsub.s	f31, f0, f0
+	fsub.s	f0, f31, f0
+	fsub.s	f0, f0, f31
+	fsub.s	f0, f0, f0, rne
+
+	fsw	f31, (x0)
+	fsw	f0, 0x1f(x0)
+	fsw	f0, -0x20(x0)
+	fsw	f0, (x31)
+	fsw	f0, sval, x31
+
+	fsw	f15, (x8)
+	fsw	f8, 4(x8)
+	fsw	f8, 0x38(x8)
+	fsw	f8, 0x40(x8)
+	fsw	f8, (x15)
+
+	fsw	f31, (sp)
+	fsw	f0, 0x1c(sp)
+	fsw	f0, 0x20(sp)
+	fsw	f0, 0xc0(sp)
diff --git a/gas/testsuite/gas/riscv/fp-f-insns-64.d b/gas/testsuite/gas/riscv/fp-f-insns-64.d
new file mode 100644
index 00000000000..02d338eb69a
--- /dev/null
+++ b/gas/testsuite/gas/riscv/fp-f-insns-64.d
@@ -0,0 +1,131 @@
+#as: -march=rv64if
+#name: F extension (64-bit)
+#objdump: -dwrMnumeric
+
+.*:[ 	]+file format .*
+
+
+Disassembly of section .text:
+
+0+ <F>:
+[ 	]+[0-9a-f]+:[ 	]+20002fd3[ 	]+fabs\.s[ 	]+f31,f0
+[ 	]+[0-9a-f]+:[ 	]+21ffa053[ 	]+fabs\.s[ 	]+f0,f31
+[ 	]+[0-9a-f]+:[ 	]+00007fd3[ 	]+fadd\.s[ 	]+f31,f0,f0
+[ 	]+[0-9a-f]+:[ 	]+000ff053[ 	]+fadd\.s[ 	]+f0,f31,f0
+[ 	]+[0-9a-f]+:[ 	]+01f07053[ 	]+fadd\.s[ 	]+f0,f0,f31
+[ 	]+[0-9a-f]+:[ 	]+00000053[ 	]+fadd\.s[ 	]+f0,f0,f0,rne
+[ 	]+[0-9a-f]+:[ 	]+00001053[ 	]+fadd\.s[ 	]+f0,f0,f0,rtz
+[ 	]+[0-9a-f]+:[ 	]+00002053[ 	]+fadd\.s[ 	]+f0,f0,f0,rdn
+[ 	]+[0-9a-f]+:[ 	]+00003053[ 	]+fadd\.s[ 	]+f0,f0,f0,rup
+[ 	]+[0-9a-f]+:[ 	]+00004053[ 	]+fadd\.s[ 	]+f0,f0,f0,rmm
+[ 	]+[0-9a-f]+:[ 	]+e0001fd3[ 	]+fclass\.s[ 	]+x31,f0
+[ 	]+[0-9a-f]+:[ 	]+e00f9053[ 	]+fclass\.s[ 	]+x0,f31
+[ 	]+[0-9a-f]+:[ 	]+c0207053[ 	]+fcvt\.l\.s[ 	]+x0,f0
+[ 	]+[0-9a-f]+:[ 	]+c0307053[ 	]+fcvt\.lu\.s[ 	]+x0,f0
+[ 	]+[0-9a-f]+:[ 	]+d0207053[ 	]+fcvt\.s\.l[ 	]+f0,x0
+[ 	]+[0-9a-f]+:[ 	]+d0307053[ 	]+fcvt\.s\.lu[ 	]+f0,x0
+[ 	]+[0-9a-f]+:[ 	]+d0007fd3[ 	]+fcvt\.s\.w[ 	]+f31,x0
+[ 	]+[0-9a-f]+:[ 	]+d00ff053[ 	]+fcvt\.s\.w[ 	]+f0,x31
+[ 	]+[0-9a-f]+:[ 	]+d0000053[ 	]+fcvt\.s\.w[ 	]+f0,x0,rne
+[ 	]+[0-9a-f]+:[ 	]+d0107053[ 	]+fcvt\.s\.wu[ 	]+f0,x0
+[ 	]+[0-9a-f]+:[ 	]+c0007fd3[ 	]+fcvt\.w\.s[ 	]+x31,f0
+[ 	]+[0-9a-f]+:[ 	]+c00ff053[ 	]+fcvt\.w\.s[ 	]+x0,f31
+[ 	]+[0-9a-f]+:[ 	]+c0000053[ 	]+fcvt\.w\.s[ 	]+x0,f0,rne
+[ 	]+[0-9a-f]+:[ 	]+c0107053[ 	]+fcvt\.wu\.s[ 	]+x0,f0
+[ 	]+[0-9a-f]+:[ 	]+18007fd3[ 	]+fdiv\.s[ 	]+f31,f0,f0
+[ 	]+[0-9a-f]+:[ 	]+180ff053[ 	]+fdiv\.s[ 	]+f0,f31,f0
+[ 	]+[0-9a-f]+:[ 	]+19f07053[ 	]+fdiv\.s[ 	]+f0,f0,f31
+[ 	]+[0-9a-f]+:[ 	]+18000053[ 	]+fdiv\.s[ 	]+f0,f0,f0,rne
+[ 	]+[0-9a-f]+:[ 	]+a0002fd3[ 	]+feq\.s[ 	]+x31,f0,f0
+[ 	]+[0-9a-f]+:[ 	]+a00fa053[ 	]+feq\.s[ 	]+x0,f31,f0
+[ 	]+[0-9a-f]+:[ 	]+a1f02053[ 	]+feq\.s[ 	]+x0,f0,f31
+[ 	]+[0-9a-f]+:[ 	]+a0000fd3[ 	]+fle\.s[ 	]+x31,f0,f0
+[ 	]+[0-9a-f]+:[ 	]+a1f00053[ 	]+fle\.s[ 	]+x0,f0,f31
+[ 	]+[0-9a-f]+:[ 	]+a00f8053[ 	]+fle\.s[ 	]+x0,f31,f0
+[ 	]+[0-9a-f]+:[ 	]+a0001fd3[ 	]+flt\.s[ 	]+x31,f0,f0
+[ 	]+[0-9a-f]+:[ 	]+a1f01053[ 	]+flt\.s[ 	]+x0,f0,f31
+[ 	]+[0-9a-f]+:[ 	]+a00f9053[ 	]+flt\.s[ 	]+x0,f31,f0
+[ 	]+[0-9a-f]+:[ 	]+a0000fd3[ 	]+fle\.s[ 	]+x31,f0,f0
+[ 	]+[0-9a-f]+:[ 	]+a00f8053[ 	]+fle\.s[ 	]+x0,f31,f0
+[ 	]+[0-9a-f]+:[ 	]+a1f00053[ 	]+fle\.s[ 	]+x0,f0,f31
+[ 	]+[0-9a-f]+:[ 	]+a0001fd3[ 	]+flt\.s[ 	]+x31,f0,f0
+[ 	]+[0-9a-f]+:[ 	]+a00f9053[ 	]+flt\.s[ 	]+x0,f31,f0
+[ 	]+[0-9a-f]+:[ 	]+a1f01053[ 	]+flt\.s[ 	]+x0,f0,f31
+[ 	]+[0-9a-f]+:[ 	]+00002f87[ 	]+flw[ 	]+f31,0\(x0\) # 0( <.*>)?
+[ 	]+[0-9a-f]+:[ 	]+7ff02007[ 	]+flw[ 	]+f0,2047\(x0\) # 7ff( <.*>)?
+[ 	]+[0-9a-f]+:[ 	]+80002007[ 	]+flw[ 	]+f0,-2048\(x0\) # f+800( <.*>)?
+[ 	]+[0-9a-f]+:[ 	]+000fa007[ 	]+flw[ 	]+f0,0\(x31\)
+[ 	]+[0-9a-f]+:[ 	]+00000f97[ 	]+auipc[ 	]+x31,0x0[ 	]+[0-9a-f]+:[ 	]+R_RISCV_PCREL_HI20[ 	]+sval
+[ 	]+[0-9a-f]+:[ 	]+R_RISCV_RELAX.*
+[ 	]+[0-9a-f]+:[ 	]+000fa007[ 	]+flw[ 	]+f0,0\(x31\) # [0-9a-f]+( <.*>)?[ 	]+[0-9a-f]+:[ 	]+R_RISCV_PCREL_LO12_I[ 	]+.*
+[ 	]+[0-9a-f]+:[ 	]+R_RISCV_RELAX.*
+[ 	]+[0-9a-f]+:[ 	]+00007fc3[ 	]+fmadd\.s[ 	]+f31,f0,f0,f0
+[ 	]+[0-9a-f]+:[ 	]+000ff043[ 	]+fmadd\.s[ 	]+f0,f31,f0,f0
+[ 	]+[0-9a-f]+:[ 	]+01f07043[ 	]+fmadd\.s[ 	]+f0,f0,f31,f0
+[ 	]+[0-9a-f]+:[ 	]+f8007043[ 	]+fmadd\.s[ 	]+f0,f0,f0,f31
+[ 	]+[0-9a-f]+:[ 	]+00000043[ 	]+fmadd\.s[ 	]+f0,f0,f0,f0,rne
+[ 	]+[0-9a-f]+:[ 	]+28001fd3[ 	]+fmax\.s[ 	]+f31,f0,f0
+[ 	]+[0-9a-f]+:[ 	]+280f9053[ 	]+fmax\.s[ 	]+f0,f31,f0
+[ 	]+[0-9a-f]+:[ 	]+29f01053[ 	]+fmax\.s[ 	]+f0,f0,f31
+[ 	]+[0-9a-f]+:[ 	]+28000fd3[ 	]+fmin\.s[ 	]+f31,f0,f0
+[ 	]+[0-9a-f]+:[ 	]+280f8053[ 	]+fmin\.s[ 	]+f0,f31,f0
+[ 	]+[0-9a-f]+:[ 	]+29f00053[ 	]+fmin\.s[ 	]+f0,f0,f31
+[ 	]+[0-9a-f]+:[ 	]+00007fc7[ 	]+fmsub\.s[ 	]+f31,f0,f0,f0
+[ 	]+[0-9a-f]+:[ 	]+000ff047[ 	]+fmsub\.s[ 	]+f0,f31,f0,f0
+[ 	]+[0-9a-f]+:[ 	]+01f07047[ 	]+fmsub\.s[ 	]+f0,f0,f31,f0
+[ 	]+[0-9a-f]+:[ 	]+f8007047[ 	]+fmsub\.s[ 	]+f0,f0,f0,f31
+[ 	]+[0-9a-f]+:[ 	]+00000047[ 	]+fmsub\.s[ 	]+f0,f0,f0,f0,rne
+[ 	]+[0-9a-f]+:[ 	]+10007fd3[ 	]+fmul\.s[ 	]+f31,f0,f0
+[ 	]+[0-9a-f]+:[ 	]+100ff053[ 	]+fmul\.s[ 	]+f0,f31,f0
+[ 	]+[0-9a-f]+:[ 	]+11f07053[ 	]+fmul\.s[ 	]+f0,f0,f31
+[ 	]+[0-9a-f]+:[ 	]+10000053[ 	]+fmul\.s[ 	]+f0,f0,f0,rne
+[ 	]+[0-9a-f]+:[ 	]+20000fd3[ 	]+fmv\.s[ 	]+f31,f0
+[ 	]+[0-9a-f]+:[ 	]+21ff8053[ 	]+fmv\.s[ 	]+f0,f31
+[ 	]+[0-9a-f]+:[ 	]+f0000fd3[ 	]+fmv\.w\.x[ 	]+f31,x0
+[ 	]+[0-9a-f]+:[ 	]+f00f8053[ 	]+fmv\.w\.x[ 	]+f0,x31
+[ 	]+[0-9a-f]+:[ 	]+e0000fd3[ 	]+fmv\.x\.w[ 	]+x31,f0
+[ 	]+[0-9a-f]+:[ 	]+e00f8053[ 	]+fmv\.x\.w[ 	]+x0,f31
+[ 	]+[0-9a-f]+:[ 	]+20001fd3[ 	]+fneg\.s[ 	]+f31,f0
+[ 	]+[0-9a-f]+:[ 	]+21ff9053[ 	]+fneg\.s[ 	]+f0,f31
+[ 	]+[0-9a-f]+:[ 	]+00007fcf[ 	]+fnmadd\.s[ 	]+f31,f0,f0,f0
+[ 	]+[0-9a-f]+:[ 	]+000ff04f[ 	]+fnmadd\.s[ 	]+f0,f31,f0,f0
+[ 	]+[0-9a-f]+:[ 	]+01f0704f[ 	]+fnmadd\.s[ 	]+f0,f0,f31,f0
+[ 	]+[0-9a-f]+:[ 	]+f800704f[ 	]+fnmadd\.s[ 	]+f0,f0,f0,f31
+[ 	]+[0-9a-f]+:[ 	]+0000004f[ 	]+fnmadd\.s[ 	]+f0,f0,f0,f0,rne
+[ 	]+[0-9a-f]+:[ 	]+00007fcb[ 	]+fnmsub\.s[ 	]+f31,f0,f0,f0
+[ 	]+[0-9a-f]+:[ 	]+000ff04b[ 	]+fnmsub\.s[ 	]+f0,f31,f0,f0
+[ 	]+[0-9a-f]+:[ 	]+01f0704b[ 	]+fnmsub\.s[ 	]+f0,f0,f31,f0
+[ 	]+[0-9a-f]+:[ 	]+f800704b[ 	]+fnmsub\.s[ 	]+f0,f0,f0,f31
+[ 	]+[0-9a-f]+:[ 	]+0000004b[ 	]+fnmsub\.s[ 	]+f0,f0,f0,f0,rne
+[ 	]+[0-9a-f]+:[ 	]+00302ff3[ 	]+frcsr[ 	]+x31
+[ 	]+[0-9a-f]+:[ 	]+00102ff3[ 	]+frflags[ 	]+x31
+[ 	]+[0-9a-f]+:[ 	]+00202ff3[ 	]+frrm[ 	]+x31
+[ 	]+[0-9a-f]+:[ 	]+003f9073[ 	]+fscsr[ 	]+x31
+[ 	]+[0-9a-f]+:[ 	]+00309ff3[ 	]+fscsr[ 	]+x31,x1
+[ 	]+[0-9a-f]+:[ 	]+003f90f3[ 	]+fscsr[ 	]+x1,x31
+[ 	]+[0-9a-f]+:[ 	]+001f9073[ 	]+fsflags[ 	]+x31
+[ 	]+[0-9a-f]+:[ 	]+00109ff3[ 	]+fsflags[ 	]+x31,x1
+[ 	]+[0-9a-f]+:[ 	]+001f90f3[ 	]+fsflags[ 	]+x1,x31
+[ 	]+[0-9a-f]+:[ 	]+20100fd3[ 	]+fsgnj\.s[ 	]+f31,f0,f1
+[ 	]+[0-9a-f]+:[ 	]+200f8053[ 	]+fsgnj\.s[ 	]+f0,f31,f0
+[ 	]+[0-9a-f]+:[ 	]+21f00053[ 	]+fsgnj\.s[ 	]+f0,f0,f31
+[ 	]+[0-9a-f]+:[ 	]+20009053[ 	]+fsgnjn\.s[ 	]+f0,f1,f0
+[ 	]+[0-9a-f]+:[ 	]+2000a053[ 	]+fsgnjx\.s[ 	]+f0,f1,f0
+[ 	]+[0-9a-f]+:[ 	]+58007fd3[ 	]+fsqrt\.s[ 	]+f31,f0
+[ 	]+[0-9a-f]+:[ 	]+580ff053[ 	]+fsqrt\.s[ 	]+f0,f31
+[ 	]+[0-9a-f]+:[ 	]+58000053[ 	]+fsqrt\.s[ 	]+f0,f0,rne
+[ 	]+[0-9a-f]+:[ 	]+002f9073[ 	]+fsrm[ 	]+x31
+[ 	]+[0-9a-f]+:[ 	]+00209ff3[ 	]+fsrm[ 	]+x31,x1
+[ 	]+[0-9a-f]+:[ 	]+002f90f3[ 	]+fsrm[ 	]+x1,x31
+[ 	]+[0-9a-f]+:[ 	]+08007fd3[ 	]+fsub\.s[ 	]+f31,f0,f0
+[ 	]+[0-9a-f]+:[ 	]+080ff053[ 	]+fsub\.s[ 	]+f0,f31,f0
+[ 	]+[0-9a-f]+:[ 	]+09f07053[ 	]+fsub\.s[ 	]+f0,f0,f31
+[ 	]+[0-9a-f]+:[ 	]+08000053[ 	]+fsub\.s[ 	]+f0,f0,f0,rne
+[ 	]+[0-9a-f]+:[ 	]+01f02027[ 	]+fsw[ 	]+f31,0\(x0\) # 0( <.*>)?
+[ 	]+[0-9a-f]+:[ 	]+00002fa7[ 	]+fsw[ 	]+f0,31\(x0\) # 1f( <.*>)?
+[ 	]+[0-9a-f]+:[ 	]+fe002027[ 	]+fsw[ 	]+f0,-32\(x0\) # f+e0( <.*>)?
+[ 	]+[0-9a-f]+:[ 	]+000fa027[ 	]+fsw[ 	]+f0,0\(x31\)
+[ 	]+[0-9a-f]+:[ 	]+00000f97[ 	]+auipc[ 	]+x31,0x0[ 	]+[0-9a-f]+:[ 	]+R_RISCV_PCREL_HI20[ 	]+sval
+[ 	]+[0-9a-f]+:[ 	]+R_RISCV_RELAX.*
+[ 	]+[0-9a-f]+:[ 	]+000fa027[ 	]+fsw[ 	]+f0,0\(x31\) # [0-9a-f]+( <.*>)?[ 	]+[0-9a-f]+:[ 	]+R_RISCV_PCREL_LO12_S[ 	]+.*
+[ 	]+[0-9a-f]+:[ 	]+R_RISCV_RELAX.*
diff --git a/gas/testsuite/gas/riscv/fp-f-insns-64.s b/gas/testsuite/gas/riscv/fp-f-insns-64.s
new file mode 100644
index 00000000000..9f23abfd915
--- /dev/null
+++ b/gas/testsuite/gas/riscv/fp-f-insns-64.s
@@ -0,0 +1,144 @@
+F:
+	fabs.s	f31, f0
+	fabs.s	f0, f31
+
+	fadd.s	f31, f0, f0
+	fadd.s	f0, f31, f0
+	fadd.s	f0, f0, f31
+	fadd.s	f0, f0, f0, rne
+	fadd.s	f0, f0, f0, rtz
+	fadd.s	f0, f0, f0, rdn
+	fadd.s	f0, f0, f0, rup
+	fadd.s	f0, f0, f0, rmm
+
+	fclass.s x31, f0
+	fclass.s x0, f31
+
+	fcvt.l.s x0, f0
+	fcvt.lu.s x0, f0
+	fcvt.s.l f0, x0
+	fcvt.s.lu f0, x0
+	fcvt.s.w f31, x0
+	fcvt.s.w f0, x31
+	fcvt.s.w f0, x0, rne
+	fcvt.s.wu f0, x0
+	fcvt.w.s x31, f0
+	fcvt.w.s x0, f31
+	fcvt.w.s x0, f0, rne
+	fcvt.wu.s x0, f0
+
+	fdiv.s	f31, f0, f0
+	fdiv.s	f0, f31, f0
+	fdiv.s	f0, f0, f31
+	fdiv.s	f0, f0, f0, rne
+
+	feq.s	x31, f0, f0
+	feq.s	x0, f31, f0
+	feq.s	x0, f0, f31
+
+	fge.s	x31, f0, f0
+	fge.s	x0, f31, f0
+	fge.s	x0, f0, f31
+
+	fgt.s	x31, f0, f0
+	fgt.s	x0, f31, f0
+	fgt.s	x0, f0, f31
+
+	fle.s	x31, f0, f0
+	fle.s	x0, f31, f0
+	fle.s	x0, f0, f31
+
+	flt.s	x31, f0, f0
+	flt.s	x0, f31, f0
+	flt.s	x0, f0, f31
+
+	flw	f31, (x0)
+	flw	f0, 0x7ff(x0)
+	flw	f0, -0x800(x0)
+	flw	f0, (x31)
+	flw	f0, sval, x31
+
+	fmadd.s	f31, f0, f0, f0
+	fmadd.s	f0, f31, f0, f0
+	fmadd.s	f0, f0, f31, f0
+	fmadd.s	f0, f0, f0, f31
+	fmadd.s	f0, f0, f0, f0, rne
+
+	fmax.s	f31, f0, f0
+	fmax.s	f0, f31, f0
+	fmax.s	f0, f0, f31
+
+	fmin.s	f31, f0, f0
+	fmin.s	f0, f31, f0
+	fmin.s	f0, f0, f31
+
+	fmsub.s	f31, f0, f0, f0
+	fmsub.s	f0, f31, f0, f0
+	fmsub.s	f0, f0, f31, f0
+	fmsub.s	f0, f0, f0, f31
+	fmsub.s	f0, f0, f0, f0, rne
+
+	fmul.s	f31, f0, f0
+	fmul.s	f0, f31, f0
+	fmul.s	f0, f0, f31
+	fmul.s	f0, f0, f0, rne
+
+	fmv.s	f31, f0
+	fmv.s	f0, f31
+
+	fmv.s.x	f31, x0
+	fmv.s.x	f0, x31
+	fmv.x.s	x31, f0
+	fmv.x.s	x0, f31
+
+	fneg.s	f31, f0
+	fneg.s	f0, f31
+
+	fnmadd.s f31, f0, f0, f0
+	fnmadd.s f0, f31, f0, f0
+	fnmadd.s f0, f0, f31, f0
+	fnmadd.s f0, f0, f0, f31
+	fnmadd.s f0, f0, f0, f0, rne
+
+	fnmsub.s f31, f0, f0, f0
+	fnmsub.s f0, f31, f0, f0
+	fnmsub.s f0, f0, f31, f0
+	fnmsub.s f0, f0, f0, f31
+	fnmsub.s f0, f0, f0, f0, rne
+
+	frcsr	x31
+	frflags	x31
+	frrm	x31
+
+	fscsr	x31
+	fscsr	x31, x1
+	fscsr	x1, x31
+
+	fsflags	x31
+	fsflags	x31, x1
+	fsflags	x1, x31
+
+	fsgnj.s	f31, f0, f1
+	fsgnj.s	f0, f31, f0
+	fsgnj.s	f0, f0, f31
+	fsgnjn.s f0, f1, f0
+	fsgnjx.s f0, f1, f0
+
+	fsqrt.s	f31, f0
+	fsqrt.s	f0, f31
+	fsqrt.s	f0, f0, rne
+
+	fsrm	x31
+	fsrm	x31, x1
+	fsrm	x1, x31
+
+	fsub.s	f31, f0, f0
+	fsub.s	f0, f31, f0
+	fsub.s	f0, f0, f31
+	fsub.s	f0, f0, f0, rne
+
+	fsw	f31, (x0)
+	fsw	f0, 0x1f(x0)
+	fsw	f0, -0x20(x0)
+	fsw	f0, (x31)
+	fsw	f0, sval, x31
diff --git a/gas/testsuite/gas/riscv/fp-zfh-insns.d b/gas/testsuite/gas/riscv/fp-zfh-insns.d
index a0bb06912bc..054e628ef66 100644
--- a/gas/testsuite/gas/riscv/fp-zfh-insns.d
+++ b/gas/testsuite/gas/riscv/fp-zfh-insns.d
@@ -9,7 +9,19 @@ Disassembly of section .text:
 
 0+000 <.text>:
 [ 	]+[0-9a-f]+:[ 	]+00059507[ 	]+flh[ 	]+fa0,0\(a1\)
+[ 	]+[0-9a-f]+:[ 	]+00000297[ 	]+auipc[ 	]+t0,0x0
+[ 	]+[0-9a-f]+:[ 	]+R_RISCV_PCREL_HI20[ 	]+hval
+[ 	]+[0-9a-f]+:[ 	]+R_RISCV_RELAX.*
+[ 	]+[0-9a-f]+:[ 	]+00029507[ 	]+flh[ 	]+fa0,0\(t0\) # [0-9a-f]+( <.*>)?
+[ 	]+[0-9a-f]+:[ 	]+R_RISCV_PCREL_LO12_I[ 	].*
+[ 	]+[0-9a-f]+:[ 	]+R_RISCV_RELAX.*
 [ 	]+[0-9a-f]+:[ 	]+00a59027[ 	]+fsh[ 	]+fa0,0\(a1\)
+[ 	]+[0-9a-f]+:[ 	]+00000297[ 	]+auipc[ 	]+t0,0x0
+[ 	]+[0-9a-f]+:[ 	]+R_RISCV_PCREL_HI20[ 	]+hval
+[ 	]+[0-9a-f]+:[ 	]+R_RISCV_RELAX.*
+[ 	]+[0-9a-f]+:[ 	]+00a29027[ 	]+fsh[ 	]+fa0,0\(t0\) # [0-9a-f]+( <.*>)?
+[ 	]+[0-9a-f]+:[ 	]+R_RISCV_PCREL_LO12_S[ 	].*
+[ 	]+[0-9a-f]+:[ 	]+R_RISCV_RELAX.*
 [ 	]+[0-9a-f]+:[ 	]+24b58553[ 	]+fmv.h[ 	]+fa0,fa1
 [ 	]+[0-9a-f]+:[ 	]+24b59553[ 	]+fneg.h[ 	]+fa0,fa1
 [ 	]+[0-9a-f]+:[ 	]+24b5a553[ 	]+fabs.h[ 	]+fa0,fa1
diff --git a/gas/testsuite/gas/riscv/fp-zfh-insns.s b/gas/testsuite/gas/riscv/fp-zfh-insns.s
index 1a04cc64008..3619e72d252 100644
--- a/gas/testsuite/gas/riscv/fp-zfh-insns.s
+++ b/gas/testsuite/gas/riscv/fp-zfh-insns.s
@@ -1,5 +1,7 @@
 	flh		fa0, 0(a1)
+	flh		fa0, hval, t0
 	fsh		fa0, 0(a1)
+	fsh		fa0, hval, t0
 
 	fmv.h		fa0, fa1
 	fneg.h		fa0, fa1

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2023-11-03  9:03 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-11-03  9:03 [binutils-gdb] RISC-V: add F- and D-extension testcases Jan Beulich

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).